Jquery ui, перетащите вызов вручную

В пользовательском интерфейсе JQuery я могу настроить элемент как перетаскиваемый путем вызова

$("#drag").draggable();

Но есть ли способ запустить и остановить функции перетаскивания вручную из другой функции? Т.е.

someOtherFunction = function() {
  $("#drag").startdrag();
}
yetAnotherFunction = function() {
  $("#drag").stopdrag();
}

Ответ 1

Ответы выше кажутся сложными.

$('.nonDraggableObjectWhichTriggersDrag').mousedown(function(e) {
    $('.draggableObject').trigger(e); 
});

Ответ 2

Начало запуска с помощью script начинается с событий мыши. мышь вниз, а затем движение мыши. Если вы можете имитировать эти движения мыши с помощью Javascript (я не знаю, где, как, или даже если это возможно), тогда он должен отключить начало перетаскивания.

Примечание: только что было установлено, что YUI имеет способ имитировать перемещения мыши и щелчки мыши. Проверьте http://developer.yahoo.com/yui/yuitest/#useractions

Ответ 3

чтобы остановить перетаскивание, вам просто нужно вернуть false при перетаскивании обратного вызова, примерно так:

$("#unlock-handle").draggable({axis:'x', containment:'parent', drag:onDrag});

...

var onDrag = function(e) {      
    if ($(this).position().left > 200) return false;
};

Надеюсь, что это поможет:-)

Ответ 4

Я не нашел способ вызвать перетаскивание вручную, но я нашел обходное решение для моей подобной ситуации.

У меня была эта ситуация с двумя перекрывающимися изображениями (см. изображение ниже), которые были частично прозрачными. В draggable start (event) я хотел проверить, попадает ли он в прозрачные пиксели. Если это так, я посмотрел под ним еще один элемент, чтобы узнать, попал ли он в него. И если это так, я хотел начать его перетаскивание.

enter image description here

Решение? Я переупорядочиваю изображения на mousemove, а затем draggable запускается для этого самого верхнего изображения.

Для выбора пиксельных точных элементов см. мой другой ответ в: регистрации кликов по элементу, находящемуся под другим элементом