Я думаю, можно ли в jQuery выбирать элементы по именованным атрибутам с помощью И и ИЛИ.
Пример:
<div myid="1" myc="blue">1</div>
<div myid="2" myc="blue">2</div>
<div myid="3" myc="blue">3</div>
<div myid="4">4</div>
Я хотел бы выбрать все элементы, myc="blue"
но только те, для которых myid
установлено значение 1 или 3.
Итак, я попробовал:
a=$('[myc="blue"] [myid="1"] [myid="3"]');
но это не работает, то же самое здесь:
a=$('[myc="blue"] && [myid="1"] || [myid="3"]');
Можно ли без написания специальных функций фильтра?
myc
иmyid
. Если вы используете HTML5, добавьте к ним префиксdata-
:data-myc
иdata-myid
.Ответы:
И операция
Операция ИЛИ , используйте запятые
Как прокомментировал @Vega:
источник
myc == blue && (id == 1 || id == 3)
a=$('[myc="blue"] [myid="1"],[myid="3"]');
, означает ли это,([myc="blue"] AND [myid="1"]) OR [myid="3"]
или([myc="blue"]) AND ([myid="1"] OR [myid="3"])
я ищу второй // Изменить: спасибо за это обновление! :-)Простое использование
.filter()
[docs] (AND) с использованием множественного селектора [docs] (OR):В общем, объединение селекторов в цепочку, вроде как
a.foo.bar[attr=value]
какой-то селектор И.jQuery имеет обширную документацию о поддерживаемых селекторах, ее стоит прочитать.
источник
Как насчет написания фильтра, как показано ниже,
Изменить: @Jack Спасибо .. полностью пропустил ..
ДЕМО
источник
Оператор and в селекторе - это просто пустая строка, а оператор или - это запятая.
Однако здесь нет группировки или приоритета, поэтому вам нужно повторить одно из условий:
источник
blue
, но я не был уверен насчет числовых значений, поэтому я оставил их.Сначала найдите условие, которое встречается во всех ситуациях, затем отфильтруйте особые условия:
источник
В вашем особом случае это будет
источник
JQuery использует селекторы CSS для выбора элементов, поэтому вам просто нужно использовать более одного правила, разделяя их запятыми, например:
Редактировать:
Извините, вы хотели синий и 1 или 3. Как насчет:
Соединение двух селекторов атрибутов вместе дает вам И, использование запятой дает вам ИЛИ.
источник
myc == blue && (id == 1 || id == 3)
[myc="blue"]
селектор во втором примере.Чтобы правильно выбрать элементы, используя указанные вами логические операции, вам нужны
jQuery.filter()
толькоAND
операции, а не «специальные функции фильтрации». Вам также понадобитсяjQuery.add()
дляOR
операции.В качестве альтернативы можно использовать сокращение в одном селекторе, где селекторы помех вместе действуют как,
AND
а разделение запятой действует какOR
:источник