jQuery: Обнаружьте, если элемент существует

В моем коде у меня есть следующий 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>');
});
7
задан st4ck0v3rfl0w 29 July 2010 в 17:08
поделиться

4 ответа

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

$('#listItem:not(:has(.greenCheckMark))')
    .append('<span class="greenCheckMark"></span>');
12
ответ дан 6 December 2019 в 19:31
поделиться
$('.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 проверит весь документ на наличие зеленых флажков).

0
ответ дан 6 December 2019 в 19:31
поделиться

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

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

EDIT: Исправлена 'несвязанность' с вопросом.

1
ответ дан 6 December 2019 в 19:31
поделиться

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

var listItem = $('#listItem');
if ( !listItem.find('span.greenCheckMark')[0] ) {
    listItem.append('<span class="greenCheckMark"></span>');
}
0
ответ дан 6 December 2019 в 19:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: