2013-09-01 140 views
0

我使用jQuery選擇器來顯示選擇的內容。 $(selector).addClass('jquery_green');jquery選擇全選

//選擇所有表(作品)

html > body > table 

//選擇第二個表,第四行,第一列(作品)

html > body > table:eq(1) tr:eq(3) > td:eq(0) 

//選擇所有表,第四行,第一列(不起作用)你能告訴我什麼是錯的?

html > body > table tr:eq(3) > td:eq(0) 

,唯一的選擇是我的發現(很笨):

var baseSelector = "html > body > table"; 
var selector = "tr:eq(3) > td:eq(0)"; 

$(".jquery_green").removeClass("jquery_green"); 

var index; 
for (index = 0; index < 10000; ++index) { 
    sel = baseSelector + ":eq(" + index + ") " + selector; 
    $(sel).addClass('jquery_green'); 
} 
+2

不知道你要在這裏做什麼。你爲什麼':eq()'10000次? – BoltClock

+0

以及如何通過點擊選擇表格行? – kangoroo

+1

@kangoroo:[選擇](http://api.jquery.com/category/selectors) – BoltClock

回答

3

我不熟悉使用一個以上的:eq()在相同的選擇器,但我認爲你的選擇器

html > body > table tr:eq(3) > td:eq(0) 

是找到第四發生html > body > table tr文件範圍,這將只給你一個tr元素,然後發現tr的第一個孩子td。如果我正確理解了:eq(),那麼即使您擁有多個表格,也只會導致一個td元素。

鑑於你的結構,你可能只需要更換:eq():nth-child():first-child不通過發生像:eq()限制作用:

html > body > table tr:nth-child(4) > td:first-child 

而且一些建議:你可以刪除html >位,因爲它是多餘的,如果您有嵌套表格,則在您的tabletr之間添加> tbody >以避免匹配頂級表格中的任何嵌套行/列會很有幫助:

body > table > tbody > tr:nth-child(4) > td:first-child 
+0

作品,謝謝!對我來說可接受的解決方案是:html> body> table tr:nth-​​child(4)> td:nth-​​child(1) – user2351471

0

沒有辦法,只好重複:

$("html > body > table").each(function(){ 
$(this).find("tr:eq(3) > td:eq(0)").addClass("jquery_green"); 
}); 
+2

爲什麼你需要使用'each()'?我認爲沒有必要這樣做。你不能只寫$(「body> table」)。find(「tr:eq(3)> td:eq(0)」)。addClass(「jquery_green」);'? –

+0

根據提供的代碼,我認爲用戶在頁面上有多個表,他希望從每個表中選擇第3行 – Maverick