2010-03-19 4 views
0

J'ai un sélecteur jQuery qui est en cours d'exécution trop lent sur ma page malheureusement grande:Accélérez: visible: sélecteur d'entrée évitant filtre

$("#section").find(":visible:input").filter(":first").focus(); 

est-il un moyen plus rapide pour sélectionner la première entrée visible sans avoir à trouver toutes les entrées visibles, puis filtrer cette sélection pour le premier? Je veux quelque chose comme :visible:input:first mais cela ne semble pas fonctionner.

[Modifier] est ici l'idée de base de ce que #Section ressemble à:

<div id="section"> 
    <div> 
     Some text <input type="text"> 
    </div> 
    <div> 
     etc. etc. <input type="text"> 
    </div> 
</div> 
+0

Pouvez-vous poster le code HTML de l'élément '# section'? –

+0

@Alex c'est un div qui contient div enfants et de nombreux éléments de forme. – macca1

+0

Donc il n'y a que des éléments '? J'ai mis à jour ma réponse. –

Répondre

2
$(":input:visible:first", "#section").focus(); 

Si vous premier filtre pour le type de contrôle que vous évitez de vérifier la :visible sur tous les éléments du #section .

Il semble que vous ayez seulement besoin d'attraper le premier input type="text" visible.
Cela devrait être un peu plus rapide.

$("input[type='text']:visible:first", "#section").focus(); 
+0

Ceci est un sélecteur différent, ': input'! =' Input' –

+0

Correction, merci. –

+0

Merci, cette mise à jour est environ 80ms plus rapide. Cependant ce sélecteur coûte encore 156ms dans IE6. Je pense que cela devrait être une recherche rapide 16ms ou moins. Y a-t-il un autre moyen d'optimiser cela? – macca1

0

Que diriez-vous d'ajouter class="default_field" au champ par défaut pour chaque page, puis en utilisant $('.default_field').focus();? Bien sûr, cela dépend de votre technologie côté serveur, mais les avantages sont qu'il supprime le fardeau de traitement du client (ce qui est très important pour IE6) et vous donne également la flexibilité choisir une entrée par défaut autre que la première sur les pages où cela est approprié.

Questions connexes