2016-11-18 3 views
0

Я пытаюсь отключить перетаскивание jquery, когда я добираюсь до края контейнера (ограничения на ось x). Here's код:Что не так с запуском мыши в режиме перетаскивания?

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(…)

Что остановить сопротивление, в результате чего не завершена (I можно увидеть несколько пикселей слева от красного окна).

Почему я не прав?

+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'); 
});