3 Stimmen

jquery traversing zu finden, ein Elternteil der Eltern

HTML:

<li class="comment">
<div class="p_comm">
 <div class="avatar"><img src="/img/1.jpg"></div>
 <div class="c_auth">author<a class="del" title="delete it!" rel="19">x</a></div>
 <div class="c_cont w">what ever</div>
 <div class="c_time">12-23 13:22:15</div>
</div>
</li>

Ich möchte das übergeordnete li relativ zum <a> in diesem Abschnitt. Ich kann keine Funktion finden, die dies ermöglicht. Ich habe versucht prev(),parentsUntil() keiner von ihnen kann dies tun. Derzeit muss ich verwenden $(this).parent().parent().parent() zu erreichen <li> . Gibt es eine Funktion zum Auffinden übergeordneter <li> direkt?

12voto

Abdul Munim Punkte 18167

Sie können verwenden closest() . Versuchen Sie dies:

$(this).closest("li.comment");

3voto

Ayman Safadi Punkte 11431

Oder dies:

$(this).parents('li');

2voto

Derk Arts Punkte 3374
var p = $('.del').parents('li');
console.log(p);

http://jsfiddle.net/hZY8R/

Die Methoden .parents() und .parent() sind ähnlich, nur dass die letztere nur eine Ebene im DOM-Baum nach oben wandert.

Wie Sie sehen können, ist es kein Problem, wenn Sie Eltern mit einem Selektor verwenden.

1voto

isNaN1247 Punkte 17483

Sie sollten Folgendes verwenden closest() die das DOM durchläuft, bis sie das gesuchte Element findet:

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

Wenn Sie dies andersherum machen würden (d. h. Sie hätten die li und suchte den a ) würden Sie verwenden:

$('li').find('a');

0voto

Marc B Punkte 347897

.parent() selbst bezieht sich nur auf den unmittelbaren Vorfahren eines Knotens, aber Sie können auch:

var li = $('a.del').parents('li.comment');

um JQuery im DOM-Baum zurückgehen zu lassen, bis es einen passenden Vorgängerknoten findet. In diesem Fall, li zeigt auf den a 's li Vorfahre.


edit: habe das vergessen .parent() geht nur eine Ebene höher, während .parents() geht den ganzen Baum hinauf. Beide akzeptieren jedoch ein Selektor-Argument.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X