如何模拟拖动事件(同时按下鼠标左键进行mousemove操作)?

3
我希望能够触发事件并且在事件被触发时显示实际上有一个按钮被按下。
$('table').on('mousemove', function(e) {
  var is_dragging = e.buttons.length > 0;
  // is_dragging should === true;
});

$('table').trigger('mousemove'); // is_dragging will be false

通常在mousedown处理程序中附加mousemove以模拟拖动,因此无需检查是否处于“拖动”状态。请详细说明您实际需要的内容。 - Teemu
1
@Anders,我更新了代码以展示我遇到的问题。 - Dan P.
@Sachin 我该如何创建自定义事件? - Dan P.
@Teemu 已更新,抱歉。 - Dan P.
1
@DanielPatz,请检查我的自定义事件答案。那应该可以工作。 - Sachin
显示剩余5条评论
3个回答

1

试试这个。创建一个自定义事件并将按钮属性附加到它。

$('table').on('mousemove', function(e) {
  var is_dragging = e.buttons.length > 0;
  // is_dragging should === true;
});

var e = $.Event( 'mousemove' );
e.buttons = ['<set any key you need>'];

$('table').trigger(e); 

太棒了,成功了!这是 jsfiddle 链接,证明它可以工作:https://jsfiddle.net/vf1o5cws/1/ - Dan P.

1
根据我理解您想要实现的功能,您希望有一个 onmousemove 的事件处理程序,在其中检查是否按下了按钮(不管是哪个按钮),但您想要手动触发事件,并使条件 is_dragging 结果为 true。如果使用 $('table').trigger('mousemove'); 手动触发事件,则该事件将没有 buttons 属性,但它将具有 .isTrigger 属性,其值为 3。请尝试此代码:https://jsfiddle.net/SeanWessell/L2z0su3j/
$('table').on('mousemove', function(e) {
  var is_dragging = e.buttons > 0 || e.buttons == undefined && e.isTrigger == 3;
  // is_dragging should === true;
  $('p').html(is_dragging.toString())
});

$('#trigger').click(function(){

    $('table').trigger('mousemove');

})

0

我非常确定 OP 想要在 mousemove 处理程序中模拟 event.buttons - Teemu
只要有一个按钮被按下并触发了“mousemove”事件,我并不在意哪个按钮被点击。 - Dan P.
哦,我现在明白你在问什么了... 你在帖子中表述得不够清楚。 - Seth McClaine
更新:查看 ondragstart http://www.w3schools.com/jsref/event_ondragstart.asp - Seth McClaine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接