代码之家  ›  专栏  ›  技术社区  ›  st4ck0v3rfl0w

jQuery:检测元素是否存在

  •  7
  • st4ck0v3rfl0w  · 技术社区  · 14 年前

    在我的代码中,当用户单击某个特定元素时,会将以下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 回复  |  直到 14 年前
        1
  •  12
  •   balexandre    14 年前

    not has

    $('#listItem:not(:has(.greenCheckMark))')
        .append('<span class="greenCheckMark"></span>');
    
        2
  •  1
  •   TJ Koblentz    14 年前

    你可以去找吗?

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

    :修复了问题的“不相关”。

        3
  •  0
  •   James    14 年前

    根据您的要求,这只会附加 <span> 如果 #listItem 尚未包含 <跨度> 用一个 class 属于 greenCheckMark .

    var listItem = $('#listItem');
    if ( !listItem.find('span.greenCheckMark')[0] ) {
        listItem.append('<span class="greenCheckMark"></span>');
    }
    
        4
  •  0
  •   Alex Larzelere    14 年前
    $('.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