2016-11-18 57 views
0

我試圖禁用jquery拖動,當我到達容器的邊緣(對x軸的約束)。 Here's代碼:在拖動中觸發mouseup有什麼問題?

var draggable = $("#drag-draggable"); 
var draggableWidth = draggable.width(); 
var draggableParentWidth = $('#drag-wrapper').width(); 
draggable.draggable({ 
    axis: "x", 
    containment: "parent", 
    drag: function (e, ui) { 
    if ((draggableRight = ui.position.left + draggableWidth) == draggableParentWidth) { 
     draggable.trigger('mouseup'); 
     console.log("finished"); 
    } 
    } 
}); 

事實是:當我到達邊緣(左)mouseup被觸發,但它引發的錯誤:Uncaught TypeError: Cannot read property '0' of null(…)

哪個停止拖拉,導致無法完成(我可以看到紅色框左側的一些像素)。

爲什麼我錯了?

+0

@prasad:什麼?不明白你的意思。但問題仍然存在......(如果您將移動速度向左移動較慢)。嘗試! – markzzz

+1

它看起來像你正在尋找的修復:https://jsfiddle.net/ppbykecw/5/我不只是確定你期待什麼確切的行爲?! –

+0

它看起來效果很好!爲什麼呢?錯誤?如果你寫出答案,你會得到+1! – markzzz

回答

1

使用此fiddle

JS:

var draggable = $("#drag-draggable"); 
var draggableWidth = draggable.width(); 
var draggableParentWidth = $('#drag-wrapper').width(); 
draggable.draggable({ 
    axis: "x", 
    containment: "parent", 
    drag: function (e, ui) { 
    var draggableRight = draggable.position().left + draggableWidth; 
    if (draggableRight >= draggableParentWidth) { 
    e.preventDefault(); 
     draggable.trigger('mouseup'); 
     console.log("finished"); 
     //e.stopPropagation(); 
    } 
    } 
}); 

draggable.on('mouseup',function(){ 
console.log('hit'); 
});