jquery .find () - Funktion alternative?
.find()
Funktionen, läuft sehr langsam und im IE 7 und darunter, was Häufig in hang-ups.
Könnte jemand mir empfehlen eine alternative?
Hier ist das code-snippet.
$(".dobAutoTab").each(function() {
var dobFields = $(this).children().find("input");
var fldDate = $(dobFields[0]);
var fldMonth = $(dobFields[1]);
var fldYear = $(dobFields[2]);
)};
möglich dupicate von : stackoverflow.com/questions/7258829/...
Ich glaube nicht, dass dieser ein Duplikat ist; diese Frage ist über das Verhalten, während dieser ist über Leistung.
Die Leistung
Trotzdem - wir werden sehen müssen, spezifischen code. Es hängt davon ab, was genau es ist Sie versuchen zu finden. IE7 ist langsam, aber es kann gemacht werden, ausführen, OK. Ohne zu sehen, Ihren code aber niemand wird in der Lage sein, um Ihnen zu helfen.
Hier ist das code-snippet. $(".dobAutoTab").each(function() { var dobFields = $(this).die Kinder().find("input"); var fldDate = $(dobFields[0]); var fldMonth = $(dobFields[1]); var fldYear = $(dobFields[2]); )};
Ich glaube nicht, dass dieser ein Duplikat ist; diese Frage ist über das Verhalten, während dieser ist über Leistung.
Die Leistung
.find
stark variieren browser pro Selektor. Geben Sie uns einige Beispiele für die Auswahlbereiche, die Sie verwenden, und wir können in der Lage sein zu helfen, wählen Sie durch bessere zu ersetzen. Auch, welche version von jQuery benutzt du?Trotzdem - wir werden sehen müssen, spezifischen code. Es hängt davon ab, was genau es ist Sie versuchen zu finden. IE7 ist langsam, aber es kann gemacht werden, ausführen, OK. Ohne zu sehen, Ihren code aber niemand wird in der Lage sein, um Ihnen zu helfen.
Hier ist das code-snippet. $(".dobAutoTab").each(function() { var dobFields = $(this).die Kinder().find("input"); var fldDate = $(dobFields[0]); var fldMonth = $(dobFields[1]); var fldYear = $(dobFields[2]); )};
InformationsquelleAutor Anurag Kyal | 2012-07-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meist hängt es davon ab, was Sie versuchen zu erreichen:
.filter()
nur die Suche in diejenigen Elemente, die Voraussetzung..find()
Suche unter Kinder, Kinder, Kinder und alle, die Nachkommen..Kinder()
funktioniert genau die gleiche Weise, aber nur die Kinder, nicht mehr Fernen Nachfahren..am nächsten()
Holen Sie sich die näheren (ersten) Elements, entspricht dem Selektor, beginnend bei dem aktuellen element..parent()
Bekommen die Eltern jedes element in das aktuelle set von aufeinander abgestimmten Elementen, Optional gefiltert durch einen Selektor.Natürlich umso genauer Ihre Auswahl wird, desto schneller werden Ihre Ergebnisse sein.
Und, wenn Sie können, suchen Sie, was Sie brauchen, im inneren zusammenhängen, so wäre noch schneller, für weitere Informationen über Selektoren, überprüfen Sie hier
InformationsquelleAutor Luis
Versuchen Sie es mit normalen CSS-Selektoren,
$('#id span')
zum Beispiel ist im Grunde$('#id').find('span')
aber viel viel schneller.Aber trotzdem, einige code-Beispiele erhalten Sie eine genauere Antwort.
Du solltest am besten post nicht nur JS, sondern auch Ihre HTML-Struktur, die in Ihrer Frage. Vielleicht Ihre derzeitige Ansatz ist nicht sehr effektiv/säubern zu tun, was Sie sowieso wollen.
InformationsquelleAutor Simon
Als Luis sagte
.filter(), .children(), .closest() and parent()
Funktionen können verwendet werden, für die alternative zu.find()
Funktion möchte ich hinzufügen, zwei weitere Selektor von jquery-Selektor, um die alternative.find()
Funktion sind wie folgt:$('#parent_id > #child_id')
oder$(".parent > .first-level-child")
$('#parent_id #child_id')
oder$('#parent_id #grandchild_id')
oder$(".parent .great-grand-child")
oder$( "form input" )
InformationsquelleAutor Haritsinh Gohil