den folgenden HTML Gegeben:Wie kann ich feststellen, ob ein jQuery-Knoten am Anfang des übergeordneten Knotens steht?
<p><img id="one" alt="at beginning, return true" />Some Text</p>
<p>Some <img id="two" alt="in middle, return false" />Text</p>
<p>Some Text<img id="three" alt="at end, return false" /></p>
Wie würde ich in der Lage sein zu sagen, dass $("img#one")
zu Beginn des übergeordneten Knoten ist?
Im Idealfall, was ich versuche, dies zu tun:
$("p>img").each(function() {
var $this = $(this);
var $parent = $this.parent();
if ("$this is at the beginning of $parent.html()") {
$parent.before($this);
} else {
$parent.after($this);
}
});
Edit: mit sebasgo's help, hier ist der endgültige Code und Ergebnis:
$("p>img").each(function() {
var $this = $(this);
var $parent = $this.parent();
if (this == this.parentNode.firstChild) {
$parent.before($this);
} else {
$parent.after($this);
}
});
<img id="one" alt="at beginning, return true" />
<p>Some Text</p>
<p>Some Text</p>
<img id="two" alt="in middle, return false" />
<p>Some Text</p>
<img id="three" alt="at end, return false" />
Ich habe es gerade versucht: First-Kind und es gilt für alle 3 Fälle. – travis
Wie ich sehe, ignoriert jQuery Textknoten in seiner Selektor-Engine. Dann solltest du plain javascript verwenden: var elem = document.getElementById ("# one"); if (elem == elem.parentNode.firstChild) {...} – sebasgo
perfekt danke! da ich in einer .each() bin ging ich mit (this == this.parentNode.firstChild) – travis