jQuery: subtiler Unterschied zwischen .has () und: has ()

Bei Verwendung mit der untergeordneten Auswahl>, die beiden Varianten von jQueries "has" verhalten sich unterschiedlich.

Nimm diesen HTML-Code:

<div>
  <span>Text</span>
</div>

Jetzt

$("div:has(>span)");

würde es zurückgeben, während:

$("div").has(">span");

würde nicht. Ist es ein Fehler oder eine Funktion? Vergleichen Sie hier:http: //jsfiddle.net/aC9dP

BEARBEITEN Dies kann ein Fehler oder zumindest ein undokumentiertes inkonsistentes Verhalten sein.

Anyway, ich denke, es wäre von Vorteil, den Child Selector zu habenkonsequen Arbeit als unärer Operator. Damit können Sie etwas tun, für das ansonsten eine benutzerdefinierte Filterfunktion erforderlich wäre - Sie können Elemente mit bestimmten untergeordneten Elementen direkt auswählen:

$("ul:has(>li.active)").show();     // works
$("ul").has(">li.active)").show();  // doesn't work, but IMHO it should

im Gegensatz zu

$("ul").filter(function () {
  return $(this).children("li.active").length > 0;
}).show();

Ich habe geöffneta jQuery-Ticket (7205) dafür

Antworten auf die Frage(4)

Ihre Antwort auf die Frage