jQuery: виберіть клас та ідентифікатор елемента одночасно?


170

У мене є кілька посилань, які я хочу одночасно вибрати клас і id.

Це тому, що у мене є 2 різні форми поведінки. Коли клас посилань отримав одне ім'я класу, вони поводяться по-одному, коли одні й ті ж класи посилань отримали іншу назву класу, вони поводяться по-різному. Імена класів перемикаються на jquery.

Тому я маю змогу одночасно вибрати клас посилань ІД. Чи можливо це?

Я спробував:

 $("a .save #country")

без жодного результату.

Відповіді:


305

Ви можете зробити:

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

АБО

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

АБО

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

як вам зручніше.

Так що так, ви можете вказати селектор, який повинен відповідати ідентифікатору та класу (і потенційно тегувати ім'я та все, що ви хочете ввести).


41
Таким чином, він схожий на: $ ("# a .b") означає елемент з класом b всередині елемента з id a. $ ("# ab") означає елемент з класом b і id a. Трюк - пробіл між #a та .b
Bhumi Singhal

13
Потрібно бути обережним, що ви використовуєте селектор id перед класом, інакше він не працює. Приклад: $ (". Save # country") ... не повертає результатів.
slotomo

43

Просто додам, що відповідь, яку надав Олексій, працювала на мене, а не на ту, яка виділяється як відповідь.

Цей не працював для мене

$('#country.save') 

Але цей зробив:

$('#country .save') 

тому мій висновок - використовувати простір. Тепер я не знаю, чи є це в новій версії jQuery, яку я використовую (1.5.1), але все одно сподіваюся, що це допоможе всім, хто має подібні проблеми, які у мене були.

редагувати: Повна заслуга пояснення (у коментарі до відповіді Алекса) йде Феліксу Клінгу, який каже:

Простір - це селектор нащадків, тобто AB означає "Зрівняти всі елементи, що відповідають B, які є нащадком елементів, що відповідають A". AB означає "виділити весь елемент, який відповідає A і B". Тож насправді залежить від того, чого ви хочете досягти. #country.saveі #country .saveне рівнозначні.


2
Чи є проблема в тому, що ви сказали «протидія» замість «країна»?
amindfv

8

Він буде працювати при додаванні простору між id і ідентифікатором класу

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


1
насправді це працювало для мене, так як воно не працювало як $ ('# countery.save'), тож дякую!
Микола

1
Я виявив, що іноді це просто прискіпливо до простору. як $ (. selector> .item # id) працює, але $ (. selector> .item #id) не працює.
Abe Petrillo

21
Простір - це селектор нащадків , тобто A Bозначає "Зрівняти всі елементи, які відповідають B, які є нащадком елементів, що відповідають A". ABозначає "виділити весь елемент, який відповідає A і B". Тож насправді залежить від того, чого ви хочете досягти. #countery.saveі #countery .saveне рівнозначні.
Фелікс Клінг

2

Зрештою, застосовуються ті самі правила, що і для css.

Тому я думаю, що ця довідка може бути корисною.


Не могли б ви узагальнити зміст своєї довідки?
krlmlr

Насправді, згідно з api.jquery.com/category/selectors, jQuery має власні селектори; також, насправді це не говорить про те, що всі CSS 1-3 селектори підтримуються ...
SamB

@SamB Ви маєте рацію, але він каже, що він запозичує CSS 1-3 І додає своє. Я все ще думаю, що посилання на матеріали W3C є дійсними для цієї дискусії.
akousmata


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.