是否可以在jQuery选择器中使用多个属性?

时间:2012-03-19 18:47:19

标签: jquery jquery-selectors

我是jQuery的新手。我知道您可以使用$('.selector [attribute=value]')选择dom中的对象,但是可以同时使用多个属性吗?

例如:

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

7 个答案:

答案 0 :(得分:4)

是。你如何做到这取决于你想做什么。如果要匹配任一属性,请使用逗号运算符和完整选择器:

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

如果您希望元素与两个属性匹配,则只需将它们堆叠在一起:

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

另请注意,space是一个运算符,因此选择器.selector [attribute=value]匹配具有类selector的元素内具有给定属性的元素,而选择器.selector[attribute=value]与元素匹配类selector和给定的属性。

答案 1 :(得分:3)

这取决于你想要的东西:

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

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

选择具有以下任一属性的元素:

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

答案 2 :(得分:1)

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

来源:Multiple Attribute Selector

答案 3 :(得分:1)

语法为:

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

但是如果你发现自己必须创建复杂的属性过滤器,那么使用filter()函数可能是一个更清晰的选择:

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

将此HTML作为样本:

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

这应该可以解决问题:

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

答案 6 :(得分:0)

您可以使用.filter()执行此操作。

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