2011-08-23 46 views
0
jQuery("#contentItems table.tablesorter tbody tr td:eq(3)").live('mousedown', function (e) { 
     var tr = jQuery(this); 
     tr.fadeTo('fast', 0.5); 
}); 

基本上,我希望表格中每一行的第4個單元淡出一點,當我點擊它們時。但上面的代碼似乎只適用於第一個tr的第四個單元。有任何想法嗎?爲什麼我的代碼僅適用於JQuery中的第一個tr?

回答

0

delegate

$("#contentItems table.tablesorter tbody tr").delegate('td:eq(3)', 'mousedown', function(e){ 
     $(this).fadeTo('fast', 0.5); 
}); 

還是這個使用nth-child選擇是基於1個指數試試這個

$("#contentItems table.tablesorter tbody tr td:nth-child(4)").live('mousedown', function(e){ 
     $(this).fadeTo('fast', 0.5); 
}); 
0

的原因是#contentItems table.tablesorter tbody tr td會匹配所有列,td在你的表,那麼:eq(3)將與該組中的第td匹配。

試試這個:

jQuery("#contentItems table.tablesorter tbody tr") 
    .delegate("td:eq(3)", 'mousedown', function() { 
     var tr = jQuery(this); 
     tr.fadeTo('fast', 0.5); 
    } 
); 
+0

那麼,如何運用EQ(),只在TD,而不是整個的選擇? – Bluemagica

0

試試這個:

jQuery("#contentItems table.tablesorter tbody tr").each(jQuery("td:eq(3)", this).live('mousedown', function (e) { 
    var tr = jQuery(this); 
    tr.fadeTo('fast', 0.5); 
})) 

這將適用於內jQuery選擇(搶第四屆TD元素)到每一行,然後應用你的鼠標按下。 (注意,語法/拼寫錯誤可能需要進行一些編輯)

1

:eq(3)完全匹配第3個td,不管您是否指定tr作爲祖先。您想改爲使用nth-child選擇器。我也建議你使用delegate,因爲它是更快,更清潔:

http://jsfiddle.net/At4bW/

相關問題