2012-12-04 53 views
1

我只是不明白爲什麼一個ID是不是一個有效的父: http://api.jquery.com/child-selector/子選擇器和ID

有效期:

$("#listequestions tr").click(function() { 
    $(this).addClass("success"); 
}); 

無效:

$("#listequestions > tr").click(function() { 
    $(this).addClass("success"); 
}); 

有人能幫我理解爲什麼?

謝謝。

+1

你可以發佈的HTML以及? – frictionlesspulley

+0

「>」表示(第一級)直接的孩子,而另一個表示所有的後代 – frictionlesspulley

+0

tr是#listequestions –

回答

9

A tbody會自動插入表中,如果沒有的話。

這就是爲什麼匹配"#listequestions > tr"唯一可能的方法是將id設置爲theadtfoottbody

這是孩子選擇器的風險之一。

讓我們假設你有下面的HTML:

<table id=listequestions> 
    <tr><td>some text</td></tr> 
</table>​ 

然後tr將通過這兩個查詢匹配:

  • $('#listequestions > tbody > tr')
  • $('#listequestions tr')
0

這個工作會改變嗎?

$("#listequestions").children("tr").click(function() { 
     $(this).addClass("success"); 
    }); 
+0

我不認爲它已被棄用。jQuery文檔說'$('parent> child',** context **)'選擇器將是,但不是常規的''父'>子''。 –

+0

@RémiBreton:我錯過了並糾正了我的陳述。謝謝! –

0
$("#listequestions").find("tr").click(function() { 
     $(this).addClass("success"); 
}); 
1

在這裏,你與ID listequestions

$("#listequestions > tr").click(function() { 
    $(this).addClass("success"); 
}); 

,在這裏你都選擇內部元素的所有元素與ID listequestions包括子孩子的選擇元素中的直接子。

$("#listequestions tr").click(function() { 
    $(this).addClass("success"); 
}); 

感謝

1
$("#listequestions tr") 

將嘗試匹配all the children which are tr

$("#listequestions > tr") 

將匹配only the immediate children ..

所以,如果TR不直接子那麼第二個將無法工作..

正如dystroy指出