2010-08-29 3 views
0

Есть ли хороший способ для .appendTo либо один элемент, либо либо в зависимости от того, существует ли он в DOM?jQuery: appendTo либо элементы

Так, например, в идеале я хотел бы сделать

идеальный метод 1:

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

не так хороший метод 2:

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

if (!div1.length) e = div2; 

.appendTo(e); 

Конечно, я могу» t сделать первый вариант, потому что $() всегда возвращает объект, чтобы он оценил значение true alert($ || 'a'); всегда будет возвращать объект jQuery.

ответ

4

Если они в порядке просто использовать .first(), как это:

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

Какой порядок они встречаются в DOM в, просто использовать .first() или .last() для выбора направления вы хотите. Также .appendTo() просто становится местами вокруг, было бы лучше сделать это:

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

спасибо, что это хороший способ сделать это! будет '.eq()' работать таким же образом? –

+0

@Gary - Yup, это просто удобные функции, '.first()' is '.eq (0)' и '.last()' является просто '.eq (-1)' за кулисами. –

0

почему бы не просто установить класс на дивы. таким образом, если присутствует один из divs, он всегда будет работать.

+0

В некоторых случаях оба div могут присутствовать, поэтому я не хочу, чтобы это добавлялось дважды –

1

Как насчет

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

Предполагая, что по крайней мере один из них существует.

+0

Это тоже хорошо, не знал о '.get' за это спасибо :) –

Смежные вопросы