Jquery 检查 ul 中是否已经存在 id=x 的 li

发布于 2024-11-01 18:15:58 字数 665 浏览 2 评论 0原文

我和李有很多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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一梦等七年七年为一梦 2024-11-08 18:15:58

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

您可以检查元素是否存在,如下所示:

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

}

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:

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

}
温柔戏命师 2024-11-08 18:15:58

通过使用 attr(),您实际上是在设置与 find() 调用匹配的任何元素的 id 属性。您应该对要匹配的 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/

By using attr(), you're actually setting the id attribute of any elements matched by your find() call. You should use find on the ID you're matching against.

$(".container").droppable({
    drop: function (event, ui) {
        var a = $(this).find("#" + $(ui.draggable).attr('id'));
        if (a.length === 0) {
            $.ajax({
                ...
            });
        }                
    }
});

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/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文