jQuery: определить, существует ли элемент - PullRequest
7 голосов
/ 29 июля 2010

В моем коде есть следующий HTML-код, который добавляется к элементу списка, когда пользователь нажимает на определенный элемент.

<span class="greenCheckMark"></span>

Используя jQuery, как я могу определить, существует ли элемент, и если нет, не добавить еще одну зеленую галочку?

$('.clickedElement').live('click',function(){
//does the green check mark exist? if so then do nothing, else 
$('#listItem).append('<span class="greenCheckMark"></span>');
});

Ответы [ 4 ]

12 голосов
/ 29 июля 2010

Используйте , а не , а имеет

$('#listItem:not(:has(.greenCheckMark))')
    .append('<span class="greenCheckMark"></span>');
1 голос
/ 29 июля 2010

Вы могли бы просто посмотреть на это?

($('.greenCheckMark', '#listItem').length > 0) ? /* found green check mark in #listItem */ : /* not found */ ;

РЕДАКТИРОВАТЬ : исправлена ​​«несвязанность» с вопросом.

0 голосов
/ 29 июля 2010

В соответствии с вашими требованиями, это добавит <span> только в случае, если #listItem еще не содержит <span> с class из greenCheckMark.

var listItem = $('#listItem');
if ( !listItem.find('span.greenCheckMark')[0] ) {
    listItem.append('<span class="greenCheckMark"></span>');
}
0 голосов
/ 29 июля 2010
$('.clickedElement').live('click',function(){ 
    //does the green check mark exist? if so then do nothing, else
    if($("#listItem span.greenCheckMark").length != 0)
    {
        $('#listItem').append('<span class="greenCheckMark"></span>');
    } 
}); 

Хорошо, после нескольких правок это должно быть то, что вы ищете.

$("#listItem span.greenCheckMark").length != 0 вернет массив объектов JQuery, если длина этой области не равна 0тогда это существует.Убедитесь, что вы проверяете, где именно вы хотите проверить, ($("span.greenCheckMark").length проверит весь документ на наличие зеленых галочек).

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