2

我是一个新手,在使新的 div 可拖动时遇到了一些问题。

例子是:http: //jsbin.com/iyexi3/

问题是当我显示名称对话框时,我创建了一些 div,但它们不可拖动。

4

3 回答 3

0

终于找到解决方案是追加新的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
    });
});

谢谢您的帮助。

于 2010-03-03T20:44:21.903 回答
0

通过执行以下操作,您已经使一些在 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() 。

一种方法是将选择器/可拖动代码放入一个函数中,并在添加新元素后调用它。

于 2010-03-03T19:02:11.730 回答
0

问题在于,当您将新元素附加到 DOM 时,它不会继承现有可拖动元素的事件处理程序。

您可能对liveQuery有一些运气

这将允许您在与选择器匹配的所有当前和未来元素上创建实时事件。它类似于内置的 live() 方法。我没有使用它,但它应该适用于可拖动的。

于 2010-03-03T19:05:01.767 回答