对于这个胡思乱想的标题感到抱歉,这是一个例子:
<table>
<tr>
<th class="hey-1-aa"></th>
</tr>
<tr>
<th class="hey-2-aa"></th>
</tr>
<tr>
<td class="hey-1-bb"></tr>
</tr>
<tr>
<td class="hey-2-bb"></tr>
</tr>
</table>
有没有更好的方法来选择所有TH / TR以类前缀“hey-2-”开头,比$('th[class^="hey-2"], td[class^="hey-2"]')
更简洁?
答案 0 :(得分:2)
$('.hey-2')
sizzle(jquery选择器引擎)的选择器以基本css开始,然后从那里移动。所以如果你可以用一个选择器设置一个元素的样式,你可以用同样的方式从jquery中获取它。
有关选择器列表,请查看jquery api
所以我认为要消除的第一件事是将其限制为tr / th并且只是做类似
的事情 $('table [class^=hey-2]')
这简化了它。
但是,我倾向于同意其他答案。如果这些物品合法地有共同点,为什么不给它们一个共同的类?而不是class="hey-2-aa"
使它class="hey-2 aa"
,那么你真的可以使用我发布的原始答案。
答案 1 :(得分:1)
请记住,您可以为元素使用多个类。 所以,也许为元素设置更多类是有用的。 选择起来会更简单。
答案 2 :(得分:1)
<table>
<tr>
<th class="hey-1-aa"></th>
</tr>
<tr>
<th class="hey-2-aa sameclass"></th>
</tr>
<tr>
<td class="hey-1-bb"></tr>
</tr>
<tr>
<td class="hey-2-bb sameclass"></tr>
</tr>
</table>
$(".sameclass");
答案 3 :(得分:0)
你可以试试这个:
$('tr > [class^="hey-2"]')
即,选择每个tr元素中具有以“hey-2”开头的类的任何子元素。
(或者对于标记完全,就像问题中的那样:$('tr:odd > *')
)
我知道显然你已经简化了问题的标记,但是就目前而言,你似乎使用类作为唯一标识符 - 如果是这样你应该使用id。