Wie wähle ich das erste übergeordnete DIV mit jQuery aus?
Lesezeit: 2 Minuten
Adam
var classes = $(this).attr('class').split(' '); // this gets the current element classes
var classes = $(this).parent().attr('class').split(' '); // this gets the parent classes.
Der Elternteil in der obigen Situation ist ein Ankor.
Wenn ich das erste übergeordnete DIV von $(this) erhalten möchte, wie würde der Code aussehen?
var classes = $(this).div:parent().attr('class').split(' '); // just a quick try.
* Grundsätzlich möchte ich die Klassen des ersten übergeordneten DIV von $(this) erhalten.
Danke
Shef
Verwenden .closest() um den DOM-Baum bis zum angegebenen Selektor zu durchlaufen.
var classes = $(this).parent().closest('div').attr('class').split(' '); // this gets the parent classes.
parents("div") durchläuft und gibt alle übergeordneten Divs zurück, die Sie verwenden sollten .eq(0) danach, um sicherzustellen, dass es genau das zurückgibt, was Sie wollen
– meo
17. August 2011 um 7:44 Uhr
Denken Sie daran, dass die Verwendung besser für die Leistung ist .parents('div').eq(0) — die Verwendung dieses Purse-CSS-Selektors GEFOLGT von jQuery, um nur auf das erste Element zu filtern, wird Ihnen einen leichten Leistungsschub geben — siehe den Abschnitt “Zusätzliche Hinweise” auf der jQuery :eq doc
– Noah Whitmore
6. Februar 2014 um 7:45 Uhr
@NoahWhitmore Behoben. Gebraucht closest() es würde also nicht alle Eltern zurückgeben, aber die div Elternteil.
– Shef
6. Februar 2014 um 9:48 Uhr
Tatu Ulmanen
Verwenden .closest()wodurch das erste Vorfahrenelement abgerufen wird, das mit dem angegebenen Selektor übereinstimmt 'div':
var classes = $(this).closest('div').attr('class').split(' ');
BEARBEITEN:
Wie @Shef bemerkte, .closest() gibt das aktuelle Element zurück, wenn es sich auch um ein DIV handelt. Um dies zu berücksichtigen, verwenden Sie .parent() Erste:
var classes = $(this).parent().closest('div').attr('class').split(' ');
.closest() passt sich selbst an, wenn $(this) ist ein DIV-Element.
– Shef
17. August 2011 um 7:37 Uhr
@Shef, das waren neue Informationen für mich, danke. Ich habe meine Antwort bearbeitet, um dies widerzuspiegeln.
– Tatu Ulmanen
17. August 2011 um 7:48 Uhr
könntest du einfach verwenden .parents("div").eq(0)
– meo
17. August 2011 um 8:03 Uhr
Dies wird übergeordnet, wenn es sich um ein div handelt. Dann wird es Klasse.
var div = $(this).parent("div");
var _class = div.attr("class");