Объект-клон не сбрасывается - PullRequest
2 голосов
/ 31 июля 2009

Я пытаюсь клонировать сбрасываемый объект с помощью Jquery, но клонированный объект не сбрасывается.

$(document).ready(function(){
$("input[value='Add']").click(function(e){
e.preventDefault();
$("div.field:last").clone().insertAfter("div.field:last");
});

$(".field").droppable();

HTML

<div class="field">
Last Name<input type="text" value="" />
First Name<input type="text" value="" />
</div>
<div class="field">
Last Name<input type="text" value="" />
First Name<input type="text" value="" />
</div>
<input type="Submit" name="submit" value="Add" /> 

Firebug показывает, что клонированный объект также имеет класс ui-droppable, есть идеи, почему он не будет работать?

РЕДАКТИРОВАТЬ
Установка bool (true) или создание цепочки клонированного объекта с помощью .droppable () также не работает

Ответы [ 2 ]

3 голосов
/ 31 июля 2009

Вам необходимо скопировать события в клон; передать true на clone():

$("div.field:last").clone(true).insertAfter("div.field:last");

Вам также может понадобиться скопировать некоторые данные из оригинала:

var original = $("div.field:last");
var clone = original.clone(true);
clone.data( 'droppable', jQuery.extend(true, {}, original.data('droppable')) );
/* Untested! */
0 голосов
/ 02 августа 2009

Я нашел способ сделать это, используя .live, я использую плагин .livequery , который очень похож на .live

Когда вы связываете «живое» событие, оно связывается со всеми текущими и будущими элементами на странице

$("input[value='Add']").livequery("click", function(e){
e.preventDefault();
$("div.field:last").clone().insertAfter("div.field:last");
$("div.field").droppable();
...