Ich versuche, ein oder mehrere Elemente auszuwählen, die NICHT von einem anderen spezifischen Element abstammen.Elemente außerhalb eines anderen spezifischen Elements auswählen
<html>
<body>
<div>
<p>
<b>
<i> don't select me </i>
</b>
</p>
</div>
<div>
<i>don't select me either </i>
</div>
<i> select me </i>
<b>
<i> select me too </i>
</b>
</body>
</html>
Im Beispiel oben ich alle wählenden ‚i‘ Elemente, die nicht innerhalb DIV-Elemente sind. Andersherum wäre es einfach, mit ('div i'), aber dies in: not() ist nicht möglich.
Wie kann ich alle i Elemente außerhalb von div Elementen auswählen? Oft ist es die Verwendung von jQuery, vorgeschlagen, die aussehen würde:
nondiv_i = all_i.not(all_div.find("i"))
ich jQuery verwenden könnte nicht jqLite, sondern verwenden - Funktion - jqLite kein nicht() hat. Eine jqLite Lösung ist auch willkommen! Ist es möglich, dies ohne wiederholte Iterationen und Vergleiche zu tun?
Edit: Um klarzustellen, ich möchte keine div-Vorfahren für meine i-Elemente haben, nicht nur keine direkten Div-Eltern.
Eine vergleichbare XPath würde wie folgt aussehen:
//i[not(ancestor::div)]
'document.querySelectorAll ('body: nicht (div) i')
Sie sie dann durch den Index bekommen' – putvande
@ putvande Bitte fügen Sie Ihren Kommentar als Antwort hinzu, damit OP sie hoffentlich akzeptiert. – JeffC
Diese Antwort hat nicht funktioniert. Es gibt wählen Sie mich nicht und wählen Sie mich auch. Es sieht gut aus, wenn man darüber nachdenkt (Körper auswählen, alle Elemente auswählen, die NICHT div sind, und dann i-Elemente greifen), aber es funktioniert nicht (das ist, wo meine Probleme von vornherein kommen). Während ich diesen Teil meines Projekts für später beiseite gelegt habe, habe ich diese Frage nicht aufgegeben. :) Immer noch auf der Suche nach einer Antwort. – Peter1807