オブジェクトをある場所から別の場所にドラッグした後にjquery draggableが動作を停止する理由がわかりません。目的は、オブジェクトがしきい値内でドラッグされた後に左から右に値を追加することでした。最初に機能しますが、要素が新しいコンテナに追加された後に機能しなくなりました。jQuery draggableがドラッグして新しいコンテナに追加した後に機能しない
私は何か不足していますか?
$(".draggable-right").draggable({
containment: "#div-item-court"
,scroll: false
,stop:function(event, ui) {
var wrapper = $(this).parent().offset(); //$("div.box-left").offset();
var wrapperDestination = $("div.box-left").offset();
var borderLeft = parseInt($(this).parent().css("border-left-width"),10); //parseInt($("#div.box-left").css("border-left-width"),10);
var borderTop = parseInt($(this).parent().css("border-top-width"),10); //parseInt($("#div.box-left").css("border-top-width"),10);
var pos = ui.helper.offset();
var x = $("#source_x").val(pos.left - wrapper.left - borderLeft);
var y = $("#source_y").val(pos.top - wrapper.top - borderTop);
console.log(wrapper.left +" - "+ pos.left +" - "+ borderLeft +" - "+ wrapperDestination.left);
if (parseInt(pos.left)/parseInt(wrapper.left) <= 0.85){ //positioned to the left, changing family
curLeftTotal = $("#div-total-left").text();
curRightTotal = $("#div-total-right").text();
toAdd = $(this).text();
curLeftTotal = parseInt(curLeftTotal) + parseInt(toAdd); //add to the left family
curRightTotal = parseInt(curRightTotal) - parseInt(toAdd);
$("#div-total-left").html(curLeftTotal);
$("#div-total-right").html(curRightTotal);
//remove the object from its parent and add to the new parent
$(this).removeClass("draggable-right").addClass("draggable-left").removeAttr("style").css({'background-color' : 'red', 'position' : 'relative'});
temp = $(this).clone();
$(this).remove();
//create to the new parent
$("div.box-left").append(temp);
//make the element draggable
temp.draggable(); <<< to make the newly added element draggable again
//console.log(toAdd +"-"+ curLeftTotal +"-"+ curRightTotal);
}
}
});
https://jsfiddle.net/mirageservo/adr47hn5/
おかげで、
PSでコードを参照してください。いくらコードがjsFiddleで機能していないのですか?
EDIT:jsFiddleが動作しています。同様に、新たに追加された要素に動作を追加することができました。しかし、その奇妙なのは、ドラグが空になったからです。
temp.draggable({
... same code above here ...
});
は、あなたの入力や提案が必要:今
....
temp.draggable()
質問は再帰と上記の動作とドラッグと同じようにする方法ですが、私は下に次のコードが正しいとは思いません。
おかげで、
はここに再現することはできません。 jQuery 1.12.3とjQuery UI 1.11が追加されました。 –
@FelippeDuarte、これはあなたの試用版では機能しましたか? css({'background-color': 'red'、 'position': 'relative')このクラスは、 }); temp = $(this).clone(); $(this).remove(); //新しい親に作成 $( "div.box-left")。append(temp); –
@FelippeDuarte、ボックスをあるコンテナから別のコンテナに移動したとき、どこに移動できますか? –