2016-05-17 123 views
2

我有這樣的代碼,只是爲了與if語句的問題寫成:

$("ul.pick").click(function(){ 
     var kid = $(this).find("li.contactIn"); 
     kid.addClass("current"); 
     var parent = kid.parent(); 
     if(parent == $(this)) 
      { 
      parent.addClass("something"); 
      } 
    }); 

所以ul.pick是菜單按鈕,李。 contactIn是其存儲要顯示的內容的子項。 問題在if語句中。我做錯了什麼?我試圖編寫代碼,它會檢查當前是否拉下了內存。是我現在點擊的那個。如果是這樣,代碼應該把它拉起來。如果沒有,李。應該被拉下來。 在此先感謝:)

+3

您比較引用一個羽翼豐滿的演示。由於$(this)是一個全新的jQuery對象,它們永遠不會匹配。若要更正它使用.is()函數:http://api.jquery.com/is/ – nurdyguy

回答

3

問題是使用$(this)調用jQuery構造函數並創建一個jQuery對象。在JavaScript中,將對象相互比較始終是錯誤的。你需要比較實際的元素。

下面是該點擊添加類

$("ul.pick").click(function(){ 
 
    var kid = $(this).find("li.contactIn"); 
 
    kid.addClass("current"); 
 
    var parent = kid.parent(); 
 
    if(parent[0] == this) //compare elements 
 
    { 
 
     parent.addClass("something"); 
 
    } 
 
});
.something { color: red; } 
 
.current { border: 1px solid red; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<ul class="pick"> 
 
    <li class="contactIn">contactIn</li> 
 
</ul>

+0

[0]是什麼意思?它似乎沒有工作 –

+0

@JakubMałojło - '[0]'訪問由jQuery對象持有的基本本地元素。什麼不行? –

+0

它只是不添加類到單擊的元素 –