11

在 Jquery UI 中,我可以通过调用将元素配置为可拖动

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

但是有没有办法从另一个功能手动启动和停止拖动功能?IE

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

4 回答 4

12

上面的答案似乎过于复杂。

$('.nonDraggableObjectWhichTriggersDrag').mousedown(function(e) {
    $('.draggableObject').trigger(e); 
});
于 2011-05-23T00:07:49.717 回答
1

拖动开始是通过查看鼠标事件的脚本启动的。鼠标按下,然后鼠标移动。如果您可以通过 Javascript 模拟这些鼠标移动(我不知道在哪里、如何,或者即使这是可能的),那么它应该会触发拖动的开始。

注意:刚刚发现YUI有一种模拟鼠标移动和鼠标点击的方法。查看http://developer.yahoo.com/yui/yuitest/#useractions

于 2009-04-08T15:09:53.390 回答
1

要停止拖动,您只需在拖动回调中返回 false,如下所示:

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

...

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

希望能帮助到你 :-)

于 2011-10-24T20:36:48.667 回答
1

我没有找到手动触发拖动的方法,但我找到了针对类似情况的解决方法。

我有两个重叠的图像(见下图),都是部分透明的。在可拖动的开始(事件)中,我想检查它是否击中透明像素。如果是这样,我在它下面寻找另一个元素,看看那个元素是否被击中。如果是,我想启动它的拖动。

在此处输入图像描述

解决方案?我在 mousemove 上重新排序图像,然后为最上面的图像触发可拖动。

对于像素精确的元素选择,请参阅我的另一个答案:注册点击另一个元素下的元素

于 2012-11-17T01:36:31.270 回答