将类选择器和属性选择器与jQuery组合在一起

时间:2011-06-05 23:43:01

标签: javascript jquery jquery-selectors

是否可以将类选择器与jQuery结合使用?

例如,给定以下HTML:

<TABLE>
  <TR class="myclass" reference="12345"><TD>Row 1</TD></TR>
  <TR class="otherclass" reference="12345"><TD>Row 2</TD></TR>
  <TR class="myclass" reference="12345"><TD>Row 3</TD></TR>
  <TR class="myclass" reference="54321"><TD>Row 4</TD></TR>
</TABLE>

我可以用什么选择器来选择第1行和第3行?

我试过了:

$(".myclass [reference=12345]") // returns nothing

$(".myclass, [reference=12345]") // returns all 4 rows (yes, I know the comma means 'or')

我确信答案很简单,我已经尝试过搜索jQuery论坛和文档,但我似乎无法想出这个。有人可以帮忙吗?

4 个答案:

答案 0 :(得分:243)

结合它们。字面上结合他们; 连接在一起,没有任何标点符号。

$('.myclass[reference="12345"]')

您的第一个选择器会查找具有属性值的元素,该元素包含在具有该类的元素中 该空间被解释为descendant selector

您的第二个选择器,就像您所说,查找具有属性值或类或两者的元素 逗号被解释为multiple selector运算符 - 无论这意味着什么(CSS选择器没有“运算符”的概念;逗号可能更准确地称为分隔符。)

答案 1 :(得分:15)

我认为你只需要移除空间。即。

$(".myclass[reference=12345]").css('border', '#000 solid 1px');

这里有一个小提琴http://jsfiddle.net/xXEHY/

答案 2 :(得分:7)

此代码也适用:

$("input[reference=12345].myclass").css('border', '#000 solid 1px');

答案 3 :(得分:1)

这也有效:

$(".myclass[reference='12345']").css('border', '#000 solid 1px');