4

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

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

4

2 回答 2

7

ID 不能以数字开头,并且必须是唯一的。对于非唯一标识符,请使用类。

您可以像这样检查元素是否存在:

if($('#myDIV').length) {

}
于 2011-04-13T13:06:46.917 回答
1

通过使用attr(),您实际上是在设置与您的调用id匹配的任何元素的属性。find()您应该find在您匹配的 ID 上使用。

$(".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-属性/

于 2011-04-13T13:11:53.903 回答