JQuery добавить к нескольким элементам сбоев - PullRequest
16 голосов
/ 03 сентября 2010

Я пытаюсь использовать метод append () jQuery для добавления общего содержимого к набору div следующим образом:

$("#horizontal_menu").append(menu);
$("#vertical_menu").append(menu);

Я обнаружил, что это содержимое (в данном случае, меню)добавляется к вертикальному_меню, но не к горизонтальному_меню.Предотвращает ли добавление к одному

добавление этого содержимого к другому
?

Ответы [ 3 ]

25 голосов
/ 03 сентября 2010

Вы можете перевернуть его, используя .appendTo() следующим образом:

menu.appendTo("#horizontal_menu, #vertical_menu");

Если menu не является объектом jQuery, просто оберните его:

$(menu).appendTo("#horizontal_menu, #vertical_menu");

В настоящее время происходит то, что происходит добавление или, точнее, перемещение в #horizontal_menu, а затем немедленное перемещение снова.Передача селектора или нескольких элементов в .appendTo() делает его клонированным и добавляется к каждому внутренне.

9 голосов
/ 03 сентября 2010

Предотвращает ли добавление к одному из вас добавление этого контента к другому?

Что касается [jQuery wrapped] элементов DOM, то да. Под капотом jQuery вызывает appendChild, который при многократном вызове с одним и тем же элементом просто перемещает его из текущей позиции в новую .

Вы можете попробовать клонировать , чтобы сделать копию:

var $menu = $(menu);
$("#horizontal_menu").append($menu.clone());
$("#vertical_menu").append($menu.clone());

Вы можете передать true в clone(), если хотите, чтобы обработчики событий также копировались.

0 голосов
/ 23 декабря 2015

Другое клонирование Твист:

        var menu = $("#menu").contents();
        menu.clone().appendTo("#ulOne");
        menu.clone().appendTo("#ulTwo");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...