Est-il possible de fusionner plusieurs objets DOM jQuery dans un tableau et d'appeler des méthodes jQuery sur tous ces objets ?
F.ex :
<button>one</button>
<h3>two</h3>
<script>
var btn = $('button');
var h3 = $('h3');
$([btn,h3]).hide();
</script>
Cela ne fonctionne pas. Je sais que je peux utiliser le sélecteur 'button,h3' ici, mais dans certains cas, j'ai déjà plusieurs éléments DOM jQuery et je dois les fusionner pour pouvoir appeler les prototypes jQuery sur tous ces éléments.
quelque chose comme :
$.merge([btn,h3]).hide();
fonctionnerait. Vous avez des idées ?
UPDATE :
Je l'ai résolu. Vous pouvez le faire comme ceci :
$.fn.add.call(btn,h3);
Je vais accepter le add()
suggestion comme pour m'indiquer la bonne direction.
5 votes
@David, pourquoi cette utilisation bizarre de
call
?btn.add(h3)
travaille...1 votes
Parce que je ne connais pas le premier objet, donc je ne peux pas enchaîner. Apply() serait encore mieux, ainsi je peux envoyer un tableau en utilisant $.fn.add.apply(arr.shift(),arr) ;
1 votes
Y a-t-il un moyen d'ajouter plus de deux objets ?
12 votes
Si vous ne connaissez pas le premier objet, vous pouvez éviter d'utiliser
call
en enchaînant un objet jQuery vide :$().add(btn).add(h3)
. IMO, c'est une bien meilleure façon d'utiliser$.add
.0 votes
$.fn.add.call()
échouera si son premier argument n'est pas un objet jQuery.1 votes
S'agit-il essentiellement d'une copie de stackoverflow.com/questions/323955/
0 votes
Une façon étrange, mais agréable d'utiliser add à mon avis, dans la mesure où vous ne voulez pas enchaîner .add().