Frage 1: Was ist der Quellcode von jQuery.grep?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | grep: function ( elems, callback, invert ) {
var callbackInverse,
matches = [],
i = 0,
length = elems.length,
callbackExpect = !invert;
for ( ; i < length; i++ ) {
callbackInverse = !callback( elems[ i ], i );
if ( callbackInverse !== callbackExpect ) {
matches.push( elems[ i ] );
}
}
return matches;
}
|
Nach dem Login kopieren
Frage 2: Was sind die aufrufenden Methoden von jQuery.grep?
In der Winnow-Funktion
1 2 3 4 5 6 | if ( qualifier.nodeType ) {
return jQuery.grep( elements, function ( elem ) {
return ( elem === qualifier ) !== not;
});
}
|
Nach dem Login kopieren
In der Winnow-Funktion gibt es auch einen Aufruf
1 2 3 | return jQuery.grep( elements, function ( elem ) {
return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;<span style= "font-family: Arial, Helvetica, sans-serif;" >
});
|
Nach dem Login kopieren
oder in der Winnow-Methode
1 2 3 4 | return jQuery.grep( elements, function ( elem, i ) {
return !!qualifier.call( elem, i, elem ) !== not;<span style= "font-family: Arial, Helvetica, sans-serif;" >
});
|
Nach dem Login kopieren
und in jQuery.buildFragment,
1 | jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked );
|
Nach dem Login kopieren
wird aufgerufen. Diese Methode verwendet das Attribut „defaultChecked“ aller Eingabeelemente auf dasselbe wie „checked“. Frage 3: Welche Funktion hat die Methode jQuery.grep?
1 2 3 4 5 6 7 | var rcheckableType = (/^(?:checkbox|radio)$/i);
function fixDefaultChecked( elem ) {
if ( rcheckableType.test( elem.type ) ) {
elem.defaultChecked = elem.checked;
}
}
|
Nach dem Login kopieren
Wenn der dritte Parameter nicht übergeben wird In diesem Fall bedeutet dies, dass wir nach dem Aufruf der Rückruffunktion die Elemente zurückgeben möchten, deren Ergebnis wahr ist. Daher besteht die Funktion von jQuery.grep darin, nur Elemente zu filtern, die bestimmte Anforderungen erfüllen Bedingungen werden im Ergebnisarray angezeigt! Denken Sie daran:
Diese Funktion Der Rückgabewert ist ein Array!
Wir analysieren anhand des folgenden Beispiels, wie das Element ausgewählt wird, dessen ID und Klasse beide Vater sind
JS-Teil
1 2 3 4 | <p class = "father" id= "father" style= "background-color:red;height:400px;background-color:#ccc;" >
</p>
<p class = "father" style= "background-color:red;height:400px;background-color:#ccc;" >
</p>
|
Nach dem Login kopieren
Grep bestimmt also die zurückgegebenen Elemente danach, ob der Rückgabewert wahr oder falsch ist. Alle Elemente, die die Bedingungen erfüllen, bilden eine DOM-Sammlung! Bleibt unverändert, wir ändern den JS-Teil wie folgt:
1 2 3 4 5 6 7 8 | var result=jQuery.grep($( ".father" ), function (elem,index)
{
return elem.id=== "father" ;
});
console.log(result);
|
Nach dem Login kopieren
Dies Da der dritte Parameter wahr ist, wird er intern invertiert, was bedeutet, dass wir möchten, dass das Element mit dem Wert false im Ergebnis erscheint Array, sodass das Ergebnisarray nur das zweite p-Element enthält.
1 2 3 4 5 6 7 8 | var result=jQuery.grep($( ".father" ), function (elem,index)
{
return elem.id=== "father" ;
},true);
console.log(result);
|
Nach dem Login kopieren
Tatsächlich kann der Code im Quellcode wie folgt geändert werden:
Frage 4: Was sind der Kontext und die Parameter in jQuery.grep? 🎜>Antwort: Da es keinen expliziten Aufruf oder keine explizite Anwendung gibt, wird der Kontext durch die Laufzeitumgebung bestimmt. Der erste Parameter ist das Element und der zweite Parameter ist der Index
(Nur jQuery.each und jede Instanz, der erste Parameter der Kartenmethode ist der Index und der zweite Parameter ist das Element!)
1 2 3 4 5 | callbackResult = callback( elems[ i ], i );
if ( callbackResult === callbackExpect ) {
matches.push( elems[ i ] );
}
|
Nach dem Login kopieren
Zusammenfassung:
(1) Die $.each-Methode betont das Durchlaufen aller Elemente und das anschließende Ausführen einer Rückruffunktion Filtern Sie alle Elemente nach einer Funktion und lassen Sie alle Elemente eine Funktion ausführen, um zu sehen, ob der Rückgabewert dem erwarteten Rückgabewert entspricht. Wenn er den erwarteten Rückgabewert erfüllt, kann er in das Ergebnisarray aufgenommen werden negieren, also betont grep das Filtern, d. Jede Rückruffunktion wird übergeben. Die übergebenen Parameter sind der Index und das Element, wobei der Index vorne und das Element hinten steht. Die von anderen grep- oder Map-Methoden übergebenen Parameter sind das Element und der Index, wobei das Element vorne steht und der Index hinten (außer zum Beispiel „map“ und „jede“-Methode)!
Das obige ist der detaillierte Inhalt vonAnalyse von vier Fragen zur Funktion .grep() von jQuery. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!