2

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()でチェーンすることも機能しません

4

2 に答える 2

3

イベントをクローンにコピーする必要があります。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! */
于 2009-07-31T19:46:09.877 に答える
0

.live を使用して、これを達成する方法を見つけました。プラグイン.livequeryを使用しています。これは、.live と非常によく似た機能を果たします。

「ライブ」イベントをバインドすると、ページ上の現在および将来のすべての要素にバインドされます

$("input[value='Add']").livequery("click", function(e){
e.preventDefault();
$("div.field:last").clone().insertAfter("div.field:last");
$("div.field").droppable();
于 2009-08-02T08:05:12.500 に答える