2009-11-15 4 views
10

Regardez ce code par exemple ...fusion/2 Rejoignez jQuery fixe

var $div = $('#my div'), 

    $ul = $('#somewhere ul'); 

Comment puis-je effectuer une méthode jQuery sur les deux? Par exemple, cela fonctionnerait-il? Quelle est la meilleure pratique ici?

$($div, $ul).addClass('my-new-class'); 

Ne serait-ce que la recherche $div dans un contexte de $ul?

+0

oui il, j'ai aussi pensé l'autre jour même chose que je vois maintenant que je ne suis pas seul :) – Sinan

+1

'$ ('# ma div, #quelque part ul'). addClass ('my-new-class');' est en fait très bien, tout comme '$ div.add ($ ul) .addClass ('my-new-class '0; – ChaseMoskal

Répondre

19

jQuery fournit la méthode add pour cela. Le cas le plus courant est d'ajouter d'autres éléments à l'ensemble jQuery qui correspondent à un sélecteur donné (passé à add), mais vous pouvez l'utiliser pour effectuer un standard union de deux ensembles aussi:

$c = $a.add($b).addClass('foo') 

add retourne un nouveau enveloppé set, contenant la combinaison fusionnée et unique de this et l'ensemble donné. Notez que $b reste inchangé.

+0

Merci! Je savais que la réponse se cachait là-bas ... – alex

+0

est-ce que $ a' reste inchangé aussi? –

+0

'$ a' reste inchangé. (Ceci est un ancien thread - actuellement en utilisant jQuery 3.2.1.) –

-2

essayer

$('#my div, #somewhere ul').addClass('my-new-class'); 

regard here

+0

Je sais que cela fonctionnera, mais parfois j'ai mis en place les 2 caches au début du script, et je voudrais éviter de les redéfinir plus tard dans les méthodes, etc – alex

3

Je sais que cela est très très tard, mais vous pouvez également effectuer les opérations suivantes:

$().add($div).add($ul).addClass('my-new-class'); 
+0

Pourquoi le premier vide? – alex

+2

'$ div.add ($ ul) ...' a plus de sens ... Je ne vois pas comment cela ajoute de la valeur aux réponses déjà existantes. –

+3

@FelixKling En une ligne, pas beaucoup. Mais j'utilise le concept derrière: 'var initted = $();' ... plus tard, sous une seule condition, 'initted.add ($ foo)' ... plus tard, sous une autre condition (non mutuellement exclusive) , 'initted.add ($ foo)' ... et ainsi de suite. Pouvoir commencer avec un [ensemble vide] (http://en.wikipedia.org/wiki/Empty_set) est extrêmement précieux. – Izkata