我是一个新手,在使新的 div 可拖动时遇到了一些问题。
例子是:http: //jsbin.com/iyexi3/
问题是当我显示名称对话框时,我创建了一些 div,但它们不可拖动。
终于找到解决方案是追加新的div ...
$('#nv_objeto').click(function(){
var nbr =prompt("Por favor escriba el nombre del Objeto:","");
$("#layout").append("<div id='"+c_nbr(nbr)+"' class='seleccionable' style='top: 300px; left: 400px; width : 40px; height : 40px; background-color : black; position :absolute;'></div>");
$('#layout > div:last').blur().draggable({
drag: function(e, ui) {
$('#status_nombre').html($(this).attr('id'));
$('#status_top').attr('value',$(this).css('top'));
$('#status_left').attr('value',$(this).css('left'));
}
,containment: '#layout'
,refreshPositions: true
,snap: true
});
});
谢谢您的帮助。
通过执行以下操作,您已经使一些在 HTML 中硬编码的元素可拖动:
$('.seleccionable').draggable({ drag: function(e, ui) { $('#status_nombre').html($(this).attr('id')); $('#status_top') .attr('value',$(this).css('top')); $('#status_left').attr('value',$(this).css('left')); } ,遏制: '#layout' ,refreshPositions: true ,snap: true });
当您添加一个新元素时,您也需要为该元素调用 .draggable() 。
一种方法是将选择器/可拖动代码放入一个函数中,并在添加新元素后调用它。
问题在于,当您将新元素附加到 DOM 时,它不会继承现有可拖动元素的事件处理程序。
您可能对liveQuery有一些运气
这将允许您在与选择器匹配的所有当前和未来元素上创建实时事件。它类似于内置的 live() 方法。我没有使用它,但它应该适用于可拖动的。