Jquery检查具有id = x的li是否已存在于ul中

时间:2011-04-13 13:05:08

标签: javascript jquery-ui jquery-selectors drag-and-drop jquery-ui-draggable

我和李有很多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的值。

任何指导都会很棒。感谢。

2 个答案:

答案 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/