2009-12-22 2 views
129

У меня есть некоторые ссылки, которые я хочу выбрать одновременно с классом и идентификатором.jQuery: выбрать класс элемента и идентификатор одновременно?

Это потому, что у меня есть 2 разных поведения. Когда класс ссылок получил одно имя класса, они ведут себя в одном ключе, когда одни и те же класы ссылок получили другое имя класса, они ведут себя по-разному. Названия классов - это переключатель с jquery.

Так что я должен иметь возможность выбирать класс ссылок и идентификатор одновременно. Это возможно?

Я пробовал:

$("a .save #country") 

без какого-либо результата.

ответ

235

Вы можете сделать:

$("#country.save")... 

ИЛИ

$("a#country.save")... 

ИЛИ

$("a.save#country")... 

, как вы предпочитаете.

Итак, да, вы можете указать селектор, который должен соответствовать ID и классу (и, возможно, тег-имя и все, что вы хотите вставить).

+23

Так что в основном его вроде: $ ("# a .b") означает элемент с внутренним элементом класса b с id a. $ ("# a.b") означает элемент с классом b и id a. Трюк - это пробел между #a и .b –

+8

. Будьте осторожны, если вы используете селектор id перед классом, иначе он не будет работать. Пример: $ (". Save # country") ... не возвращает результаты. – slotomo

0

Как насчет этого кода?

$("a.save#country") 
+0

В спешке я проголосовал неправильно в этом ответе. Извините ... – devundef

0
$("a.save, #country") 

будет выбрать как "a.save" класса и "страна" идентификатор.

7

Он будет работать при добавлении пространства между идентификатором идентификатора и класса

$("#countery .save")...

+1

на самом деле это сработало для меня, так как оно не работало, как $ ('# countery.save'), так что спасибо! – Nikola

+0

Я обнаружил, что иногда это придирчиво к пространству. например $ (. selector> .item # id), но $ (. selector> .item #id) не делает. –

+14

Пространство - это селектор * потомков *, то есть 'A B' означает« сопоставить все элементы, соответствующие B, которые являются потомками элементов, соответствующих A ». 'AB' означает« выберите все элементы, соответствующие A и B ». Так что это действительно зависит от того, чего вы хотите достичь. '# countery.save' и' #countery .save' не эквивалентны. –

32

Просто добавить, что ответ, что Алекс при условии, что работал для меня, а не тот, который выделен в качестве ответа.

Это один не работает для меня

$('#country.save') 

Но это один сделал:

$('#country .save') 

поэтому мой вывод использовать пространство. Теперь я не знаю, относится ли это к новой версии jQuery, которую я использую (1.5.1), но в любом случае надеюсь, что это поможет любому, у кого есть аналогичная проблема.

редактировать: Полный кредит для объяснения (в комментарии к ответу Алекса) идет на Феликса Клинг, который говорит:

Пространство является потомком селектор, т.е. AB означает «Match все элементы, которые матч B которые являются потомками элементов, соответствующих А ". AB означает «выбрать все элементы , которые соответствуют A и B». Так что это действительно зависит от того, чего вы хотите достичь. #country.save и #country .save не являются эквивалентными.

+2

Проблема в том, что вы сказали «контр» вместо «страны»? – amindfv

1

В конце применяются те же правила, что и для css.

Поэтому я думаю, что this reference может быть полезным.

+0

Не могли бы вы подытожить содержание вашей справки? – krlmlr

+0

Собственно, согласно http://api.jquery.com/category/selectors/ у jQuery есть свои собственные селектора; Кроме того, на самом деле он не говорит о том, что все селекторы CSS 1-3 поддерживаются ... – SamB

+0

@SamB Вы правы, но он говорит это _borrows_ из CSS 1-3 и добавляет свой собственный. Я все еще думаю, что ссылка на материал W3C действительна для этого обсуждения. – akousmata

Смежные вопросы