Jquery проверить, существует ли li с id = x в ul уже - PullRequest
4 голосов
/ 13 апреля 2011

У меня много UL с li.У разных UL будет li с одинаковым идентификатором:

<ul>
 <li id='1'>this</li>
 <li id='2'>that</li>
</ul>

<ul>
 <li id='1'>this</li>
</ul>

Пользователь может перетаскивать li из списка в другой, но только если li с таким идентификатором не существует.Пока у меня есть это:

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

Однако, когда я отбрасываю перетаскиваемый объект, он изменяет id всех li на значение отброшенного li.

Любое руководство было бы замечательно.Спасибо.

Ответы [ 2 ]

7 голосов
/ 13 апреля 2011

ID не могут начинаться с цифр и должны быть уникальными. Для неуникальных идентификаторов используйте классы.

Вы можете проверить, существует ли такой элемент:

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

}
1 голос
/ 13 апреля 2011

Используя attr(), вы фактически устанавливаете атрибут id любых элементов, соответствующих вашему вызову find().Вы должны использовать find для идентификатора, с которым вы сравниваете.

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

Кроме того, как упоминает @Diodeus, идентификаторы не должны начинаться с цифры.Они также должны быть уникальными для всего документа, поэтому, если вам нужны дубликаты / ожидаемые идентификаторы, я бы рекомендовал использовать другой атрибут, например атрибут данных HTML5: http://ejohn.org/blog/html-5-data-attributes/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...