Jquery 触发点击并保持事件 问题:

Jquery 触发点击并保持事件 问题:,jquery,html,jquery-ui,jquery-ui-draggable,Jquery,Html,Jquery Ui,Jquery Ui Draggable,使用jQuery,如何模拟点击并保持事件 我现在正把头撞在墙上,似乎不知道该怎么办 我也尝试过在谷歌和论坛上搜索,但都没有用 在我当前的示例中,我使用的是jQueryUI 理想情况下,我想做以下工作: 在div上单击/鼠标向下移动 模拟“点击并按住”事件,并能够自由移动元素 在下一次单击/鼠标向下时,结束单击并按住事件 当我尝试以下功能时: $("#drag").draggable().mousedown(function(e){ e.preventDefault(); re

使用jQuery,如何模拟点击并保持事件


我现在正把头撞在墙上,似乎不知道该怎么办

我也尝试过在谷歌和论坛上搜索,但都没有用

在我当前的示例中,我使用的是jQueryUI

理想情况下,我想做以下工作:

  • div
    上单击/鼠标向下移动
  • 模拟“点击并按住”事件,并能够自由移动元素
  • 在下一次单击/鼠标向下时,结束单击并按住事件
当我尝试以下功能时:

$("#drag").draggable().mousedown(function(e){
    e.preventDefault();
    return $(this).mousedown();
});
然后,它会导致无限循环,最终导致浏览器崩溃。但是,我不确定如何启动常量
.mousedown()
事件

下面是我目前拥有的一个演示:


任何帮助都将不胜感激

我不认为有什么办法可以模拟点击按住。此外,它可能会创建太多的浏览器依赖项

所以你可以试试下面的东西

var click = false,
top = null,
left = null;

$(document).bind('mousemove', function (e) {
   if (click == true) {
      $('#drag').css({
         left: e.pageX - left,
         top: e.pageY - top
       });
    }
});

$('#drag').draggable().click(function(e) {
    top = e.pageY - $('#drag').position().top; 
    left = e.pageX - $('#drag').position().left;
    click = !click;
    return false;
});

$('html').click(function() {
    click = false;
});

演示:

Wolf和Dom的解决方案非常有效,是我的解决方案的基础,但您提到您使用的是jquery ui的
可拖动
,因此这里有一个可能的解决方案,将jquery ui的
可拖动
对象与
可拖放
结合使用。我正试图让可拖放的事件触发,这时一个可拖放的事件拖到可拖放的事件上并放到可拖放的事件上,所以我利用了
ui.mouse
对象的内置/私有函数,该对象继承并覆盖了
draggable

$(document).ready(function(){
      var click = false

    $(document).bind('mousemove', function (e) {
        if (click == true) {
           $('#drag').data('uiDraggable')._mouseDrag(e);
        }
    });

    $('#drag').draggable().click(function(e) {
        if(!click){
            $(this).data('uiDraggable')._mouseCapture(e, true)
            $(this).data('uiDraggable')._mouseStart(e, true, true);
        }else{
            $(this).data('uiDraggable')._mouseUp(e);
            $(this).data('uiDraggable')._mouseStop(e);
        }
        click = !click;
        return false;
    });

    $('html').click(function() {
        click = false;
    });
});
这是一张支票。要查看可拖放的内容,只需在js中取消对可拖放内容的注释。


注意:此解决方案适用于当前的jquery ui版本(1.9.2),但在将来的版本中可能会有所更改,因为它确实使用私有调用。

您可能需要滚动自己的可拖动函数或重写jquery ui中的函数,以切换单击而不是鼠标向下,因为我不认为尝试强制鼠标下移这样的事件会起作用,但我可能错了?您的解决方案使最初的单击变得不稳定,因为它捕捉到鼠标位置。我做了一些更正并将其添加到您的帖子中。再次感谢你!欢迎和快乐编码…:)您还可以在需要时解除绑定并绑定mosemove事件,以提高效率…谢谢您,先生。你简化了一道很难的题!伟大的东西;我不得不稍微修改以将拖动包含在另一个div中,但这只是在修改顶部和左侧位置之前检查边界的一种情况。谢谢