2011-05-27 240 views
5

有一個與jQuery的小混亂的問題,並選擇/造型表中的列。jQuery的第n個孩子選擇器

下面的代碼工作:

$(function() { 
     $("table").delegate('th.selcol','click', function(e) { 
     var iCol = $(this).parent().children().index(this)+1; 
     $("table tr td:nth-child(10)").each(function() { 
      $(this).toggleClass("colhighlight"); 
     }); 
     }); 
    }); 

但這代碼,改變第n個孩子(10)到第n個孩子(ICOL)產生錯誤 「未捕獲的異常:語法錯誤,不能識別的表達式::第n孩子「

$(function() { 
     $("table").delegate('th.selcol','click', function(e) { 
     var iCol = $(this).parent().children().index(this)+1; 
     $("table tr td:nth-child(iCol)").each(function() { 
      $(this).toggleClass("colhighlight"); 
     }); 
     }); 
    }); 

任何幫助將不勝感激。

回答

14
 $("table tr td:nth-child(" + iCol + ")").each(function() { 
     $(this).toggleClass("colhighlight"); 
    }); 

第n個孩子預計一個整數,而不是字符串,所以你可以使用串聯來解決問題。

+0

謝謝你,對於 「爲什麼」 – chrisk 2011-05-27 10:34:32

+1

第n個孩子的答案和解釋也接受一些關鍵字和等式。從下面的jQuery文檔中查看: '每個匹配的孩子的索引,從1開始,字符串偶數或奇數,或者一個等式(例如:nth-​​child(偶數),:nth-​​child(4n) )' – Owen 2012-11-16 11:47:10

3

試試這個:

"table tr td:nth-child("+iCol+")" 
2

把它變成這樣:

$(function() { 
    $("table").delegate('th.selcol','click', function(e) { 
     var iCol = $(this).parent().children().index(this)+1; 
     $("table tr td:nth-child(" + iCol + ")").each(function() { 
     $(this).toggleClass("colhighlight"); 
     }); 
    }); 
    }); 
0

試試這個:

$(function() { 
     $("table").delegate('th.selcol','click', function(e) { 
     var iCol = $(this).parent().children().index(this)+1; 
     $("table tr td:nth-child("+iCol+")").each(function() { 
      $(this).toggleClass("colhighlight"); 
     }); 
     }); 
    }); 

希望工程:)

+0

謝謝,那是有效的。 – chrisk 2011-05-27 10:29:37

+0

@ chrisk:很好,你會介意選擇一個答案作爲解決方案嗎? – 2011-05-27 10:36:05