在 Jquery UI 中,我可以通过调用将元素配置为可拖动
$("#drag").draggable();
但是有没有办法从另一个功能手动启动和停止拖动功能?IE
someOtherFunction = function() {
$("#drag").startdrag();
}
yetAnotherFunction = function() {
$("#drag").stopdrag();
}
在 Jquery UI 中,我可以通过调用将元素配置为可拖动
$("#drag").draggable();
但是有没有办法从另一个功能手动启动和停止拖动功能?IE
someOtherFunction = function() {
$("#drag").startdrag();
}
yetAnotherFunction = function() {
$("#drag").stopdrag();
}
上面的答案似乎过于复杂。
$('.nonDraggableObjectWhichTriggersDrag').mousedown(function(e) {
$('.draggableObject').trigger(e);
});
拖动开始是通过查看鼠标事件的脚本启动的。鼠标按下,然后鼠标移动。如果您可以通过 Javascript 模拟这些鼠标移动(我不知道在哪里、如何,或者即使这是可能的),那么它应该会触发拖动的开始。
注意:刚刚发现YUI有一种模拟鼠标移动和鼠标点击的方法。查看http://developer.yahoo.com/yui/yuitest/#useractions
要停止拖动,您只需在拖动回调中返回 false,如下所示:
$("#unlock-handle").draggable({axis:'x', containment:'parent', drag:onDrag});
...
var onDrag = function(e) {
if ($(this).position().left > 200) return false;
};
希望能帮助到你 :-)
我没有找到手动触发拖动的方法,但我找到了针对类似情况的解决方法。
我有两个重叠的图像(见下图),都是部分透明的。在可拖动的开始(事件)中,我想检查它是否击中透明像素。如果是这样,我在它下面寻找另一个元素,看看那个元素是否被击中。如果是,我想启动它的拖动。
解决方案?我在 mousemove 上重新排序图像,然后为最上面的图像触发可拖动。
对于像素精确的元素选择,请参阅我的另一个答案:注册点击另一个元素下的元素