Можно ли использовать несколько атрибутов в селекторе jQuery? - PullRequest
2 голосов
/ 19 марта 2012

Я новичок в jQuery.Я знаю, что вы можете использовать $('.selector [attribute=value]') для выбора объектов в DOM, но возможно ли использовать несколько атрибутов одновременно?

Например:

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

Ответы [ 7 ]

4 голосов
/ 19 марта 2012

Да.Как вы это сделаете, зависит от того, что вы хотите сделать.Если вы хотите сопоставить какой-либо атрибут, вы используете оператор запятой и полные селекторы:

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

Если вы хотите, чтобы элементы соответствовали обоим атрибутам, вы просто складываете их друг за другом:

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

Также обратите внимание, что пробел является оператором, поэтому селектор .selector [attribute=value] сопоставляет элементы с данным атрибутом внутри элемента с классом selector, а селектор .selector[attribute=value] сопоставляет элементы обоих с классом selector и данный атрибут.

3 голосов
/ 19 марта 2012

это зависит от того, что вы хотите:

выбирает элементы с обоими атрибутами:

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

выбирает элементы с любым атрибутом:

$('.selector[attribute=value], .selector[attribute2=value]')
1 голос
/ 19 марта 2012

Синтаксис:

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

Но если вам придется создавать сложные фильтры атрибутов, использование функции filter() может быть более чистой альтернативой:

$(".selector").filter(function () {
    var $el = $(this);
    return $el.attr("attribute") === value &&
           $el.attr("attribute2") === value2;
})
1 голос
/ 19 марта 2012
$('.selector [attribute=value][attribute2=value2]')

Источник: Выбор нескольких атрибутов

0 голосов
/ 19 марта 2012

Вы можете использовать .filter () , чтобы сделать это.

$('li').filter("[attribute1=value1]")
       .filter("[attribute2=value2]");
0 голосов
/ 19 марта 2012

Учитывая этот HTML в качестве образца:

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

Это должно сработать:

$("a[rel='foo'], a[class='bar']")
0 голосов
/ 19 марта 2012

Ты уверен, что можешь.Предложенный вами селектор выберет две группы, .selector [attribute=value] и [attribute2=value2].Если вы хотите оба, $('.selector [attribute=value][attribute2=value2]') - правильный синтаксис.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...