JQuery'de bilinen bir sınıfa sahip bir ebeveyn nasıl bulunur?


244

İçinde her biri farklı bir yuvalama düzeyinde <div>birçok başka bir şey var <div>. Her çocuğa <div>bir tanımlayıcı vermek yerine, sadece kök <div>tanımlayıcıyı vermek istiyorum . İşte bir örnek:

<div class="a" id="a5">
  <div class="b">
    <div class="c">
      <a class="d">
      </a>
    </div>
  </div>
</div>

Eğer sınıfa yanıt vermek için jQuery'de bir işlev yazar dve onun üst sınıf için kimliğini bulmak istiyorum a, bunu nasıl yaparım?

Basitçe yapamam $('.a').attr('id');, çünkü birden fazla sınıf var a. Ebeveyninin ebeveyninin kimliğini bulabilirim, ancak bu kötü tasarım, yavaş ve çok polimorfik görünmüyor (sınıfın kimliğini bulmak için farklı kod yazmak zorunda kalacaktım c).

Yanıtlar:


490

Varsayarsak thisedilir .dyazabilirsiniz

$(this).closest('.a');

closestYöntem seçici eşleşen elemanın en iç üst döndürür.


47
Küçük bir yakalama olduğunu unutmayın: Başlangıç ​​öğeniz de sorguyla eşleşirse bunun yerine üst öğe değil aynı öğe elde edersiniz. Bu istenen davranış olabilir veya olmayabilir. Değilse, bunu tavsiye ederim: $ (this) .parent (). En yakın ('. A');
Risord

1
Çok yararlı. Her zaman $ (this) .parent (). Parent (). Parent () yapmak için kullanıyorum ve daha iyi bir çözüm olduğunu biliyordum.
Wang'l Pakhrin

28

JQuery ebeveyn işlevine bir seçici geçirin :

d.parents('.a').attr('id')

DÜZENLEME yalnızca seçici ile eşleşir yakın atası istiyorsanız Hmm, aslında Slaks cevabı üstündür.


8

Verilen seçiciyle tüm ebeveynleri almak için ebeveynleri () kullanabilirsiniz .

Açıklama: Her bir öğenin atalarını, isteğe bağlı olarak bir seçici tarafından filtrelenen geçerli eşleşen öğeler kümesinde alın.

Ancak parent () öğesi yalnızca öğenin ilk üst öğesini alır.

Açıklama: İsteğe bağlı olarak bir seçici tarafından filtrelenen geçerli eşleşen öğeler kümesindeki her öğenin üst öğesini alın.

jQuery ebeveyn () ve ebeveyn ()

Ve en iyi olacağını düşündüğüm .parentsUntil () var.

Açıklama: Seçici tarafından eşleşen öğeye kadar olan ancak onu içermeyen geçerli eşleşen öğeler kümesindeki her öğenin atalarını alın.


Sadece tek bir ebeveyn istiyor , bu yüzden aramalı closest.
SLaks

2

.ParentsUntil () kullanın

$(".d").parentsUntil(".a");

Bu, eşleşen üst öğeye ulaşana kadar her üst öğeyi hedefler.
Dustin Halstead

0

@ Resord'un yukarıdaki yorumlarından alınmıştır. Bu benim için çalıştı ve soru ile daha yakından eğimli.

$(this).parent().closest('.a');

Teşekkürler

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.