2016-05-09 4 views
-4

Ich wollte den Elternknoten eines Textes erhalten, und ich weiß, dass es nicht leicht möglich ist und sollte mit manuellem Traversing erfolgen. aber ich möchte wissen, warum das Folgende nicht funktioniert.

$(':not(:has(*))').find(':contains("mytext")'); 

Ich machte es einfacher mit nur Suche nach P-Tag im Ergebnis. Ich weiß $(':not(:has(*))'); würde einige P-Tags .find("p"); zurückkehren sollten diese P-Tags wählen

Ich weiß, es funktioniert ist nicht, aber ich möchte wissen, warum?

+5

Gehen sie durch es logisch ... „all das finden, nicht enthält, enthält alles, in welche finden p. " Das ergibt keinen Sinn. – evolutionxbox

+0

im Grunde mein Verständnis war "hat" nur überprüft Tags innerhalb eines Tags und enthält Prüfungen für Texte in einem Tag. so getAllTagsThatHasNoTagsInThemAndMayContainAPlainText(). GetTheOnesThatHave ("myText"); – Mohammad

Antwort

1

Sie versuchen, nachgeordnete Elemente von Elementen ohne Nachkommen zu finden. Das wird nicht funktionieren.

Wenn Sie p Elemente ohne Nachkommen suchen, werden Sie wahrscheinlich .filter() verwenden gemeint, nicht .find():

$(':not(:has(*))').filter('p') 

Oder Sie können einfach die p Wähler auf die :not() befestigen - es gibt wirklich keinen Grund, einen separaten Wähler hier laufen (es sei denn, Ihre Selektor-String aus einer variablen oder etwas kommt):

$('p:not(:has(*))')