Более чистый способ выбора с помощью нескольких возможных значений атрибута? - PullRequest
21 голосов
/ 29 марта 2011

Есть ли в jQuery возможность выбирать по нескольким возможным значениям атрибута без необходимости использовать список селекторов через запятую.

Так вместо:

#list1 > option[value="1"], #list1 > option[value="2"], etc

Что-то вроде:

#list1 > option[value="1"|value="2"], etc

Ответы [ 2 ]

39 голосов
/ 29 марта 2011

Не то, что я знаю. Самый чистый способ, который я могу себе представить, это сначала выбрать, используя общие элементы для всех элементов, а затем просто .find() или .filter() значения ИЛИ.

Что-то вроде

$('#list1 > option[value]')
    .filter('[value="1"],[value="2"]')
    ;
2 голосов
/ 08 февраля 2017

Вы можете сделать пользовательскую функцию jQuery следующим образом:

$.fn.filterAttrVals = function (attr, vals) {
    var filter = '[' + attr + '="' + vals.split(',').join('"],[' + attr + '="') + '"]';
    return this.filter(filter);
};

Для вашего примера вы можете использовать ее следующим образом:

$('#list1 > option').filterAttrVals('value','1,2');
...