avec le code HTML suivant:Comment savoir si un noeud jQuery se trouve au début de son noeud parent?
<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>
Comment pourrais-je être en mesure de dire que $("img#one")
est au début de son nœud parent?
Idéalement ce que je suis en train de faire est la suivante:
$("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: avec sebasgo's help, voici le code final et le résultat:
$("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" />
Je viens d'essayer: first-child et c'est vrai pour les 3 cas. – travis
Comme je le vois jQuery ignore les nœuds de texte dans son moteur de sélection. Ensuite, vous devez utiliser javascript simple: var elem = document.getElementById ("# one"); if (elem == elem.parentNode.firstChild) {...} – sebasgo
parfait merci! puisque je suis dans un .each() je suis allé avec (ceci == this.parentNode.firstChild) – travis