72 votes

Sélecteur multiple chaînant dans jQuery?

Normalement, quand j'utilise une classe comme un sélecteur j'essaie d'utiliser un "id" sélecteur de sorte qu'il n'est pas de rechercher à travers l'ensemble de la page, mais seulement une zone où la classe est.

Toutefois, j'ai une vue partielle avec le code. Cette vision partielle (code commun) est enroulé autour d'une balise de formulaire.

J'ai:

<form id="Create">
// load common code in from partial view
</form>

<form id="Edit">
// load common code in from partial view
</form>

Maintenant, dans cette commune code que j'ai besoin de joindre un plugin à plusieurs champs donc, je le ferais

$('#Create .myClass').plugin({ options here});

$('#Edit .myClass').plugin({options here});

Il est donc à peu près le même code. Je me demande si il existe un moyen de le faire paraître, soit de l'id?

Modifier

Je vais avoir des problèmes avec elle quand j'ai variables pour mes sélecteurs

    my.selectors = 
    {
        A: '#Create',
        B: '#Edit',
        Plugin: ' .Plugin' 
    };

 $(selector.A+ selectors.Plugin, selector.B+ selectors.Plugin)

Ne semble pas fonctionner.

108voto

Leopd Points 12652

Vous pouvez combiner plusieurs sélecteurs avec une virgule:

 $('#Create .myClass,#Edit .myClass').plugin({options here});
 

Ou, si vous en avez plusieurs, vous pouvez ajouter une classe à tous vos éléments de formulaire, puis effectuer une recherche dans cette classe. Cela ne vous donne pas les économies de vitesse supposées de restreindre la recherche, mais honnêtement, je ne m'en ferais pas trop si j'étais vous. Les navigateurs optimisent les opérations courantes dans votre dos avec des outils sophistiqués - le sélecteur de classe simple peut être plus rapide.

47voto

Raynos Points 82706

$("#Create").find(".myClass").add("#Edit .myClass").plugin({});

Utilisez $.fn.add pour concatiner deux ensembles

11voto

Rion Williams Points 22784

Vous devriez pouvoir utiliser:

 $('#Edit.myClass, #Create.myClass').plugin({options here});
 

jQuery | Sélecteurs multiples

10voto

Kevin Ennis Points 6061

Je pense que vous obtiendrez peut-être de meilleures performances en procédant ainsi:

 $("#Create, #Edit").find(".myClass").plugin(){
    // Options
});
 

8voto

Caspar Kleijne Points 11850

comme:

$('#Create .myClass, #Edit .myClass').plugin({ 
    options: here
});

Vous pouvez spécifier n'importe quel nombre de sélecteurs de combiner en un seul résultat. Cette expression combinator est un moyen efficace pour sélectionnez des éléments disparates. L'ordre des éléments du DOM dans le retour de l' objet jQuery peuvent ne pas être identiques, comme ils seront dans l'ordre du document. Un alternative à cette combinator est l' .méthode add ().

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X