JQuery UI, вызовите перетащить вручную - PullRequest
11 голосов
/ 08 апреля 2009

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

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

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

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

Ответы [ 4 ]

12 голосов
/ 23 мая 2011

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

$('.nonDraggableObjectWhichTriggersDrag').mousedown(function(e) {
    $('.draggableObject').trigger(e); 
});
1 голос
/ 17 ноября 2012

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

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

enter image description here

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

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

1 голос
/ 25 октября 2011

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

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

...

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

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

1 голос
/ 08 апреля 2009

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

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

...