2012-04-03 51 views
1

我有一個關於jQuery選擇器的簡單問題。我使用的是tablesorter,我使用選擇器篩選出沒有記錄的表。jquery選擇器 - 替換變量

$('#mytable:has(tbody tr)').tablesorter(); 

問題出現在頁面上有多個排序表時。

var x = 0; 
while(x < 10) { 
    $('#myTable + x:has(tbody tr)').tablesorter(); 
    x+=1; 
} 

這不起作用,因爲x在選擇器中未被替換。我不能在我的生活中看到括號和引號的組合能夠解決這個問題。

任何想法?

回答

0

使用'#myTable'+x+':has(tbody tr)'作爲選擇器。

0
$('#myTable + ' + x + ':has(tbody tr)').tablesorter(); 
+0

幾乎是正確的,但你有一個額外的'+'。無論如何感謝 – 2012-04-03 09:27:02

0
$('#myTable' + x + ':has(tbody tr)').tablesorter(); 

的方式將有它的x只是字符串中的一個普通字符。像這樣突破字符串,以便將字符串,x的值轉換爲字符串和另一個字符串組合。


我太專注於回答你遇到的具體問題。該真正解決方案中使用的一類在talbes相反,像.SortableTable,然後簡單地

$('.SortableTalbe:has(tbody tr)').tablesorter(); 

,如其他人所說 - 與手動循環廢除爲好。

0

如果您覺得需要在頁面上排序多個表格。我會建議在每個表中添加一個「排序類」。

所以,你會減少你的tablesorter()到:

$('.mySortableTable:has(tbody tr)').tablesorter(); 
0

如果可能的話,我會建議給所有那些表相同的類名,即

<table class="mySortable" ... > 

然後查詢可能是多少更簡單:

$('.mySortable:has(tbody tr)').tablesorter(); 

我看到沒有必要使用增加的Id。在大多數情況下,它比它的價值更麻煩。

+0

好主意,但在這種情況下不可能。這些表格已生成,並且沒有課程選項。 – 2012-04-03 09:30:59