2

私は初心者で、新しい div をドラッグ可能にすることに問題があります。

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

問題は、名前のダイアログを表示すると、いくつかの div が作成されますが、ドラッグできません。

4

3 に答える 3

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'));}、containment :'#layout'、refreshPositions:true、snap:true});

新しい要素を追加するときは、その要素に対しても.draggable()を呼び出す必要があります。

これを行う1つの方法は、そのセレクター/ドラッグ可能なコードを関数に入れ、新しい要素を追加した後にそれを呼び出すことです。

于 2010-03-03T19:02:11.730 に答える
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

問題は、新しい要素を DOM に追加すると、既存のドラッグ可能な要素のイベント ハンドラーが継承されないことです。

あなたはliveQueryで運が良いかもしれません

これにより、セレクターに一致する現在および将来のすべての要素でライブ イベントを作成できます。組み込みの live() メソッドに似ています。私はそれを使用していませんが、ドラッグ可能で動作するはずです。

于 2010-03-03T19:05:01.767 に答える