2012-03-19 201 views

回答

1

的语法是:

$(".selector[attribute=value][attribute2=value2]") 

但是,如果你发现自己有创建复杂的属性过滤器,使用filter()功能可能是一个更清洁的替代:

$(".selector").filter(function() { 
    var $el = $(this); 
    return $el.attr("attribute") === value && 
      $el.attr("attribute2") === value2; 
}) 
+0

+1了解更多解决方案。 – andlrc 2012-03-19 18:53:56

1
$('.selector [attribute=value][attribute2=value2]') 

来源:Multiple Attribute Selector

+1

Downvoter ,谨慎解释?我在这里没有看到任何问题。 – 2012-03-19 18:51:41

+0

+1 downvote – andlrc 2012-03-19 18:53:32

4

是。你怎么做取决于你想做什么。如果你想匹配任何属性,你用逗号和完整的选择:如果你想要的元素同时匹配属性

Like $('.selector [attribute=value], .selector [attribute2=value2]') 

,你只是堆叠在一起后对方:

Like $('.selector [attribute=value][attribute2=value2]') 

注意,空间是一个操作符,所以选择与和类selector的元件内的给定的属性相匹配.selector [attribute=value]元件,同时兼具与类选择.selector[attribute=value]匹配元素和给定的属性。

+0

这是完全的工作。感谢你的回答! – chepe263 2012-03-19 18:53:29

+0

您最好注意关于类和属性之间的空间。这可能是一个错误... – gdoron 2012-03-19 18:54:34

+0

@gdoron:是的,我已经添加了一个关于此的笔记。 :) – Guffa 2012-03-19 18:56:28

0

你当然可以。您建议的选择器将选择两个组,.selector [attribute=value][attribute2=value2]。如果你想要两个,$('.selector [attribute=value][attribute2=value2]')是正确的语法。

0

鉴于这种HTML作为样本:

<a rel="foo">Stack Overflow</a> 
<a class="bar">Server Fault</a> 

这应该做的伎俩:

$("a[rel='foo'], a[class='bar']") 
0

您可以使用.filter()做到这一点。

$('li').filter("[attribute1=value1]") 
     .filter("[attribute2=value2]"); 
3

这取决于你想要什么:

选择具有两个属性的元素:

$('.selector[attribute=value][attribute2=value]') 

与任一属性选择元素:

$('.selector[attribute=value], .selector[attribute2=value]') 
相关问题