jQuery: bir öğenin sınıfını ve kimliğini aynı anda mı seçersiniz?


170

Sınıf ve kimliği aynı anda seçmek istediğim bazı bağlantılar var.

Çünkü 2 farklı davranışım var. Bir bağlantı sınıfı bir sınıf adını aldığında, bir şekilde davranırlar, aynı bağlantı sınıfları başka bir sınıf adı aldığında farklı davranırlar. Sınıf adları jquery ile değiştirilir.

Bu yüzden aynı anda bir bağlantı sınıfı VE kimliği seçebilmeliyim. Mümkün mü?

Denedim:

 $("a .save #country")

herhangi bir sonuç olmadan.

Yanıtlar:


305

Yapabilirsin:

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

VEYA

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

VEYA

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

tercih ettiğiniz gibi.

Bu nedenle evet, kimlik ve sınıfla eşleşmesi gereken bir seçici belirtebilirsiniz (ve potansiyel olarak adı ve atmak istediğiniz her şeyi etiketleyebilirsiniz).


41
Yani temelde şöyle: $ ("# a .b"), b sınıfı içinde a kimliğine sahip öğe anlamına gelir. $ ("# ab"), b sınıfı ve a kimliği olan öğe anlamına gelir. Hile #a ve .b arasındaki boşluktur
Bhumi Singhal

13
Dersten önce kimlik seçiciyi kullandığınızdan emin olun, aksi takdirde çalışmaz. Örnek: $ (". Save # country") ... sonuç döndürmüyor.
slotomo

43

Sadece Alex'in verdiği cevabın benim için işe yaradığını eklemek için, cevap olarak vurgulanan cevap için değil.

Bu benim için çalışmadı

$('#country.save') 

Ama bunu yaptı:

$('#country .save') 

bu yüzden sonucum alanı kullanmak. Şimdi (1.5.1) kullanıyorum jQuery yeni sürümü olup olmadığını bilmiyorum, ama yine de umarım bu benzer sorun olan herkes için yardımcı olur.

edit: Açıklama için tam kredi (Alex'in cevabına yaptığı açıklamada) şunları söyleyen Felix Kling'e gider:

Boşluk alt seçicidir, yani AB "A ile eşleşen öğelerin alt öğelerinden olan B ile eşleşen tüm öğeleri eşleştir" anlamına gelir. AB, "A ve B ile eşleşen tüm öğeleri seç" anlamına gelir. Bu gerçekten ne elde etmek istediğinize bağlıdır. #country.saveve #country .saveeşdeğer değildir.


2
Söylediğiniz sorun "ülke" yerine "ülke" mi?
amindfv

8

Kimlik ve sınıf tanımlayıcısı arasına boşluk eklenirken çalışır

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


1
Aslında bu benim için çalıştı, çünkü $ ('# countery.save') gibi çalışmıyordu, bu yüzden teşekkür ederim!
Nikola

1
Bazen yer konusunda seçici olduğunu fark ettim. $ (. selector> .item # id) gibi çalışır, ancak $ (. selector> .item #id) çalışmaz.
Abe Petrillo

21
Boşluk alt seçicidir , yani A B"A ile eşleşen öğelerin alt öğelerinden olan B ile eşleşen tüm öğeleri eşleştir" anlamına gelir. AB"A ve B ile eşleşen tüm öğeleri seç" anlamına gelir. Bu gerçekten ne elde etmek istediğinize bağlıdır. #countery.saveve #countery .saveeşdeğer değildir.
Felix Kling

2

Sonunda css ile aynı kurallar geçerlidir.

Bu nedenle bu referansın değerli bir faydası olabileceğini düşünüyorum .


Referansınızın içeriğini özetleyebilir misiniz?
krlmlr

Aslında, api.jquery.com/category/selectors göre jQuery kendi seçicilerine sahiptir; Ayrıca, aslında tüm CSS 1-3 seçicilerinin desteklendiğini
söylemiyor

@SamB Haklısın ama CSS 1-3'ten ödünç aldığı ve kendi eklediğini söylüyor . Hala W3C şeyler bağlantısı bu tartışma için geçerli olduğunu düşünüyorum.
akousmata


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

hem "a.save" sınıfını hem de "country" kimliğini seçecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.