我和李有很多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({
...
});
}
}
});
然而,当我删除draggable时,它会将所有li的id更改为drop li的值。
任何指导都会很棒。感谢。
答案 0 :(得分:7)
ID不能以数字开头,必须是唯一的。对于非唯一标识符,请使用类。
您可以检查元素是否存在,如下所示:
if($('#myDIV').length) {
}
答案 1 :(得分:1)
使用attr()
,您实际上设置了id
来电匹配的任何元素的find()
属性。您应该在与之匹配的ID上使用find
。
$(".container").droppable({
drop: function (event, ui) {
var a = $(this).find("#" + $(ui.draggable).attr('id'));
if (a.length === 0) {
$.ajax({
...
});
}
}
});
另外,正如@Diodeus所提到的,ID不应该以数字开头。它们在文档范围内也应该是唯一的,因此如果您需要重复/期望ID,我建议您使用其他属性,例如HTML5数据属性:http://ejohn.org/blog/html-5-data-attributes/