Jquery 检查 ul 中是否已经存在 id=x 的 li
我和李有很多UL。不同的 UL 将具有相同 id 的 li:
<ul>
<li id='1'>this</li>
<li id='2'>that</li>
</ul>
<ul>
<li id='1'>this</li>
</ul>
用户可以将 li 从一个列表拖动到另一个列表,但前提是具有相同 id 的 li 不存在。到目前为止,我有这个:
$(".container").droppable({
drop: function (event, ui) {
var a = $(this).find("li").attr("id", $(ui.draggable).attr('id'));
if (a.length == 0) {
$.ajax({
...
});
}
}
});
但是,当我放下可拖动时,它会将所有 li 的 id 更改为放下的 li 的值。
任何指导都会很棒。谢谢。
I have many UL with li. Different UL will have li with the same id:
<ul>
<li id='1'>this</li>
<li id='2'>that</li>
</ul>
<ul>
<li id='1'>this</li>
</ul>
The user can drag li from on list to the other but only if the li with the same id does not exist. So far I have this:
$(".container").droppable({
drop: function (event, ui) {
var a = $(this).find("li").attr("id", $(ui.draggable).attr('id'));
if (a.length == 0) {
$.ajax({
...
});
}
}
});
However when I drop the draggable it changes the id of all li to the value of the dropped li.
Any guidance would be great. Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
ID 不能以数字开头,并且必须是唯一的。对于非唯一标识符,请使用类。
您可以检查元素是否存在,如下所示:
IDs cannot start with numbers and must be unique. For non-unique identifiers, use classes.
You can check to see if an element exists like this:
通过使用
attr()
,您实际上是在设置与find()
调用匹配的任何元素的id
属性。您应该对要匹配的 ID 使用find
。另外,正如 @Diodeus 提到的,ID 不应以数字开头。它们也应该在整个文档范围内是唯一的,因此如果您需要重复/期望 ID,我建议使用不同的属性,例如 HTML5 数据属性: http://ejohn.org/blog/html-5-data-attributes/
By using
attr()
, you're actually setting theid
attribute of any elements matched by yourfind()
call. You should usefind
on the ID you're matching against.Also, as @Diodeus mentions, IDs should not start with a number. They should also be unique document-wide, so if you need duplicate/expect IDs, I'd recommend using a different attribute, such as an HTML5 data attribute: http://ejohn.org/blog/html-5-data-attributes/