2011-06-05 171 views
100

是否有可能将类选择器的属性选择器与jQuery?将类选择器和属性选择器与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的论坛和文档,但我似乎无法弄清楚这一个。谁能帮忙?

回答

201

合并它们。字面上结合他们; 附加他们在一起没有任何标点符号。

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

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

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

+1

可我还结合ID?我的意思是这样的:$('。myclass [myid =“6”]') – 2016-06-10 07:31:29

+0

谢谢你的回答对我有用.. – 2016-06-10 07:37:32

+0

啊空间... – 2017-09-25 01:46:59

15

我想你只是需要删除空间。即

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

这里有http://jsfiddle.net/xXEHY/

6

此代码小提琴作品太:

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