javascript
  • jquery
  • 2012-04-10 22 views 2 likes 
    2

    試圖寫一個條件與jQuery基本上說,如果div.gathering不包含a.cat-link然後執行以下操作。我嘗試了以下,但它似乎並沒有工作。任何人都可以對此有所瞭解嗎?jQuery有條件

    if($("div.gathering:contains('a.cat-link')")){ 
        $(".gathering").append("<a href='#"+data[i]["categories"][0]["category_id"]+"div' class='cat-link' id='"+data[i]["categories"][0]["category_id"]+"' rel='external'>"+data[i]["categories"][0]["category_name"]+"<br />"); 
    } 
    
    +1

    可能重複[你如何檢查是否在jQuery中存在一個選擇?(http://stackoverflow.com/questions/299802/how-do-you-check -if-a-selector-exists-in-jquery) – JJJ 2012-04-10 18:49:07

    回答

    7

    如何:

    if($("div.gathering").find("a.cat-link").length == 0){ 
        // Conditional statement returned TRUE 
    } 
    

    jQuery選擇返回匹配給定的選擇對象的數組。這就是我們使用length屬性的原因。

    您使用的方法 - $("div.gathering:contains('a.cat-link')")
    將返回一個空數組,並反對任何對象實際存在(即使它是一個空數組)的JavaScript將返回true測試時。

    示例 -

    var nateArr = []; 
    if (nateArr){ 
        // Do the dishes... 
    }else{ 
    // Eat some waffles... 
    } 
    

    如果測試自己這一點,你將永遠不會停止洗那些菜,因爲即使nateArr包含它仍然存在零個因此元素的條件語句將始終返回true
    而你的手指會弄皺

    +0

    我假設!== 0會與此相反嗎? – nate8684 2012-04-10 18:55:23

    +0

    或'> 0' ...是的:) – Lix 2012-04-10 18:57:25

    +0

    @ted - 謝謝你... – Lix 2012-04-10 19:00:57

    2

    試試這個....

    $("div.gathering:not(:contains(a.cat-link))") 
        .append("<a href='#"+data[i]["categories"][0]["category_id"]+"div' class='cat-link' id='"+data[i]["categories"][0]["category_id"]+"' rel='external'>"+data[i]["categories"][0]["category_name"]+"<br />") 
    

    這隻會返回與類聚會股利不具有a.cat鏈接....

    希望這有助於....的

    +0

    我喜歡這個 - 更少的代碼和它的竅門! +1。但是我們不知道該條件塊中是否有更多的代碼,所以你的解決方案*可能不適合他的情況。更詳細的方法也提高了可讀性。 [程序應該是爲人們閱讀而寫的,並且只是偶然地爲機器執行。](http://stackoverflow.com/a/522895/558021) – Lix 2012-04-10 19:07:13

    +1

    是的......但是對於他給出的片段,我希望它能夠得到他任務完成... – 2012-04-10 19:09:24

    相關問題