2010-08-29 4 views
0

Y a-t-il un bon moyen de .appendTo un élément ou l'un ou l'autre selon s'il existe dans le DOM?jQuery: appendTo soit les éléments

Ainsi, par exemple idéalement, je voudrais faire

méthode idéale 1:

.appendTo($('#div1') || $('#div2')); 

pas si bonne méthode 2:

var div1 = $('#div1'), 
    div2 = $('#div2'), 
    e = div1; 

if (!div1.length) e = div2; 

.appendTo(e); 

Bien sûr, je peux » t faire la première option parce que $() renvoie toujours un objet afin qu'il évalue à vrai alert($ || 'a'); retournera toujours l'objet jQuery.

Répondre

4

Si elles sont pour simplement utiliser .first(), comme ceci:

.appendTo($("#div1, #div2").first()); 

Quel que soit leur ordre d'apparition dans les DOM en, il suffit d'utiliser .first() ou .last() pour sélectionner la direction souhaitée. Aussi .appendTo() obtient juste plus intervertir, il serait préférable de le faire:

$("#div1, #div2").first().append(element); 
+0

merci c'est une bonne façon de le faire! serait '.eq()' travailler de la même manière? –

+0

@Gary - Ouais, ce ne sont que des fonctions de commodité, '.first()' est '.eq (0)' et '.last()' est simplement '.eq (-1)' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' –

0

pourquoi pas seulement définir une classe sur les divs. De cette façon, si l'un des divs est présent, il fonctionnera toujours.

+0

Dans certains cas, les deux divs peuvent être présents, donc je ne veux pas l'ajouter deux fois –

1

Que diriez-vous

($("#div1").get(0) || $("#div2").get(0)).appendTo(..) 

En supposant au moins l'un d'eux existe.

+0

c'est bon aussi, ne savait pas '' .get' merci pour cela :) –

Questions connexes