附加新的div,但它们不可拖动?

时间:2010-03-03 18:56:36

标签: jquery-ui drag

我是新手,并且在使新的div可拖动方面存在一些问题。

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

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

3 个答案:

答案 0 :(得分:0)

你已经通过这样做了一些在可拖动的HTML中硬编码的元素:

$( 'seleccionable')。可拖动({   drag:function(e,ui){                      $( '#status_nombre')HTML($(本).attr( '身份证'));                 $( '#status_top')ATTR( '值',$(本)的.css( '顶'));                 $( '#STATUS_LEFT')ATTR( '值',$(本)的.css( '左'));               }   ,收容:'#layout'   ,refreshPositions:true   ,snap:true   });

当您添加新元素时,您也需要为该元素调用.draggable()。

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

答案 1 :(得分:0)

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

您可能会对liveQuery

感到幸运

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

答案 2 :(得分: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
    });
});

感谢您的帮助。