代码之家  ›  专栏  ›  技术社区  ›  Jan

jquery用户界面,手动调用start-drag

  •  11
  • Jan  · 技术社区  · 17 年前

    在jquery ui中,我可以通过调用

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

    但是是否有一种方法可以从另一个函数手动启动和停止拖动函数?工业工程

    someOtherFunction = function() {
      $("#drag").startdrag();
    }
    yetAnotherFunction = function() {
      $("#drag").stopdrag();
    }
    
    4 回复  |  直到 17 年前
        1
  •  12
  •   John Milmine    15 年前

    上述答案似乎过于复杂。

    $('.nonDraggableObjectWhichTriggersDrag').mousedown(function(e) {
        $('.draggableObject').trigger(e); 
    });
    
        2
  •  1
  •   DMCS    17 年前

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

    注意:刚刚发现Yui有一种模拟鼠标移动和鼠标单击的方法。退房 http://developer.yahoo.com/yui/yuitest/#useractions

        3
  •  1
  •   LPL user462990    14 年前

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

    $("#unlock-handle").draggable({axis:'x', containment:'parent', drag:onDrag});
    
    ...
    
    var onDrag = function(e) {      
        if ($(this).position().left > 200) return false;
    };
    

    希望能有所帮助:—)

        4
  •  1
  •   Community Mohan Dere    9 年前

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

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

    enter image description here

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

    有关像素精确元素选择,请参阅我的另一个答案: registering clicks on an element that is under another element