2012-04-03 52 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