jQuery - 如何在一个选择器中组合具有相同类名的多个元素?

时间:2012-07-26 03:04:45

标签: jquery selector

对于这个胡思乱想的标题感到抱歉,这是一个例子:

<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"]')更简洁?

4 个答案:

答案 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”开头的类的任何子元素。

演示:http://jsfiddle.net/CCuxX/

(或者对于标记完全,就像问题中的那样:$('tr:odd > *')

我知道显然你已经简化了问题的标记,但是就目前而言,你似乎使用类作为唯一标识符 - 如果是这样你应该使用id。