2012-06-07 3 views
2

Я работаю над проектом, в котором пользователь может выполнять некоторые функции поиска в реальном времени. Когда отображаются результаты поиска в реальном времени, через JQuery Ajax, мне нужно, чтобы у пользователя была возможность щелкнуть один из отображаемых результатов и создать клон этого в другом месте на странице. Проблема, которую я нахожу, заключается в том, что эти новые результаты прямого поиска не обрабатываются при загрузке первой страницы, я считаю их «фантомным кодом», который не существует для DOM. Я провел некоторое исследование функций JQuery on(), а также функций bind(), но не уверен, как я могу реализовать их в своем собственном контексте.JQuery .on() - Клонирование динамического содержимого

Вот мой JQuery

$(".add").click(function() { 
     $(this).parent("li").clone(true).appendTo(".doc_list:first");      

}); 

В этом фрагменте кода (это) относится к моей кнопке, которая существует внутри элемента LI (родителя), который динамически созданный с помощью результатов поиска живых. Мне нужно скопировать этот элемент LI.

Если требуется больше кода, пожалуйста, дайте мне знать.

+0

Всегда включайте свою разметку. – gdoron

ответ

3

Как ваша кнопка .add добавлена ​​в DOM после загрузки страницы, т.е. динамически, поэтому вам нужен обработчик события делегата (он же живой).

$(".doc_list").on('click', '.add', function() { 
    $(this).parent("li").clone(true).appendTo(".doc_list:first"); 
}); 

Здесь я пользователь .doc_list в контейнере, но если .doc_list также динамический элемент, то заменить его каким-либо другим статическим элементом, который принадлежит к DOM на странице загрузки.

+2

В идеале вы хотите заменить «body» 'селектором для ближайшего родителя, который не динамически загружен. –

+0

Что, сэр, сделал трюк. Использование его в этом контексте облегчает мне понимание того, как и что он достигает. Большое спасибо! – Yuschick

+0

На самом деле, похоже, это не задерживается в Firefox. – Yuschick

1
$("Static-container").on('click', '.add', function() { 
     $(this).parent("li").clone(true).appendTo(".doc_list:first");      
}); 

Static-container Где находится селектор до ближайших элементов, который содержит все динамически добавлены .add элементов.

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