Объединение селектора класса и селектора атрибута с jQuery - PullRequest
128 голосов
/ 06 июня 2011

Можно ли объединить селектор класса и селектор атрибута с jQuery?

Например, с учетом следующего HTML:

<TABLE>
  <TR class="myclass" reference="12345"><TD>Row 1</TD></TR>
  <TR class="otherclass" reference="12345"><TD>Row 2</TD></TR>
  <TR class="myclass" reference="12345"><TD>Row 3</TD></TR>
  <TR class="myclass" reference="54321"><TD>Row 4</TD></TR>
</TABLE>

Каким селектором я могу пользоваться, чтобы выбрать только строки 1 и 3?

Я пробовал:

$(".myclass [reference=12345]") // returns nothing

$(".myclass, [reference=12345]") // returns all 4 rows (yes, I know the comma means 'or')

Я уверен, что ответ очень прост, и я попытался найти форумы и документацию по jQuery, но, похоже, не могу понять это. Кто-нибудь может помочь?

Ответы [ 4 ]

249 голосов
/ 06 июня 2011

Объедините их.Буквально объединить их; присоедините их вместе без знаков пунктуации.

$('.myclass[reference="12345"]')

Ваш первый селектор ищет элементы со значением атрибута, содержащиеся в элементах класса.
Пробел интерпретируется как Селектор потомков .

Ваш второй селектор, как вы сказали, ищет элементы со значением атрибута, или с классом, или с обоими.
Запятая интерпретируется как оператор множественного селектора - что бы это ни значило (CSS-селекторы не имеют понятия «операторы»; запятая, вероятно, более точно называется разделителем).

15 голосов
/ 06 июня 2011

Я думаю, вам просто нужно убрать пробел.т.е.

$(".myclass[reference=12345]").css('border', '#000 solid 1px');

Здесь есть скрипка http://jsfiddle.net/xXEHY/

7 голосов
/ 28 августа 2013

Этот код тоже работает:

$("input[reference=12345].myclass").css('border', '#000 solid 1px');
1 голос
/ 21 мая 2018

Это также будет работать:

$(".myclass[reference='12345']").css('border', '#000 solid 1px');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...