修訂ANSWER
你必須調用.draggable()
對於被添加的每個元素。在初始化時使用的jQuery選擇器僅適用於目前存在的元素,而不適用於您要創建的元素。
下面是一些JS應該工作:
var draggable_opts = {
connectToSortable: ".sph-callout-portlet",
helper: "clone",
opacity: 0.75,
revert: 'invalid',
stop: function(event, ui) {
//alert(ui)
}
};
$(function() {
$(".sph-callout-portlet").sortable({
opacity: 0.75,
placeholder: "ui-state-highlight",
}).disableSelection();
$("#sph-callout-portlet-avail li").draggable(draggable_opts);
$(document).on("click",'#addNewCo',function(e){
e.preventDefault();
var newCo = $('<li>New Callout</li>').draggable(draggable_opts);
$('#sph-callout-portlet-avail').append(newCo);
});
});
http://jsfiddle.net/SGevw/
我發現[這個答案](http://stackoverflow.com/questions/2583883/how-to-auto-apply-drag拖放效果到動態添加元素)並做了一些細微修改。但是,在我看來,這可能不是最好的解決方法。我更新了我的小提琴。 http://jsfiddle.net/Y4T32/7/ –