Die Dokumentation für jQuerys closest
sagt der folgende:jQuery .closest Standardkontext
.closest (Selektor [, context])
...
Kontext
Typ: Element
A DOM Element, in dem ein passendes Element gefunden werden kann. Wenn kein Kontext übergeben wird, wird stattdessen der Kontext des jQuery-Sets verwendet.
Wie ich es verstehe, bedeutet der fett gedruckten Text, dass die beiden Aussagen äquivalent sein sollte:
set.closest("a");
set.closest("a", set.context);
wo set
einige Jquery-Set.
jedoch, dies scheint nicht der Fall zu sein:
var context = $("#inner")[0];
var set = $("#el", context);
// the set's context is correctly the "inner" element
set.text("context: " + set.context.id);
// if the set's context is used, this closest should match nothing, but it matches and sets the color
set.closest("#outer").css("color", "red");
// with the context explicitly set, the "outer" is not found and no background color is set
set.closest("#outer", set.context).css("background-color", "blue");
#outer{
width: 100px;
height: 100px;
border: 1px solid black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="outer">
<div id="inner">
<div id="el"></div>
</div>
</div>
Wie Sie sehen können, wenn kein Zusammenhang explizit festgelegt ist, wird das Set Kontext nicht zu sein scheint verwendet als #outer
Element wird von closest
gefunden. Wenn explizit festgelegt, wird #outer
nicht korrekt gefunden.
Ist die Dokumentation falsch oder fehlt mir etwas?
Ich denke, die Dokumentation ist falsch. Es sieht nicht so aus, als würde der Kontext des jQuery-Sets verwendet, wenn der Kontext nicht angegeben ist. –
Warum hast du es gemacht 'var set = $ (" # el ", Kontext);'? Laut doc was ich bekomme, ist 'engest()', versuche den Ausdruck 'Selektor' an die Vorfahrenketten anzupassen, bis eine Übereinstimmung gefunden wird.Jetzt das zweite Argument die Methode 'engsten()' ist nur, um es ein Limit bis zu diesem Punkt zu geben, wird es weiter nach einem Spiel suchen. Und wenn es kein zweites Argument gibt, wird es von der JQuery entschieden, wo "body" das letzte Elternteil sein könnte. –
Ihr Code sieht also nicht wie das richtige Beispiel für das Jquery-Dokument aus. –