你如何模拟拖动事件(单击按钮的鼠标移动)?
How do you simulate a drag event (mousemove with a button clicked)?
我希望能够触发事件并让它显示在触发事件时实际上有一个按钮处于按下状态。
$('table').on('mousemove', function(e) {
var is_dragging = e.buttons.length > 0;
// is_dragging should === true;
});
$('table').trigger('mousemove'); // is_dragging will be false
::更新::
调查ondragstart
http://www.w3schools.com/jsref/event_ondragstart.asp
=======
*.buttons
代表您点击的按钮。在 mousemove
时您还没有点击按钮。
意思是你的e.buttons === 0
关于 MouseEvent.button 的文档:
http://www.w3schools.com/jsref/event_button.asp
您可以通过在您的函数中抛出一个 debugger
并检查您的 e
变量来验证这一点
JSFiddle:
http://jsfiddle.net/qf3u8m61/
试试这个。创建自定义事件并附加 buttons
属性。
$('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);
所以根据我认为你想要完成的事情。你想为 onmousemove 设置一个事件处理程序,你正在检查按钮是否按下(不管哪个按钮按下)但是你想手动触发事件并使条件 is_dragging 为真.
如果事件是使用 $('table').trigger('mousemove');
手动触发的,事件将没有按钮 属性 但是它会有一个 .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');
})
我希望能够触发事件并让它显示在触发事件时实际上有一个按钮处于按下状态。
$('table').on('mousemove', function(e) {
var is_dragging = e.buttons.length > 0;
// is_dragging should === true;
});
$('table').trigger('mousemove'); // is_dragging will be false
::更新::
调查ondragstart
http://www.w3schools.com/jsref/event_ondragstart.asp
=======
*.buttons
代表您点击的按钮。在 mousemove
时您还没有点击按钮。
意思是你的e.buttons === 0
关于 MouseEvent.button 的文档: http://www.w3schools.com/jsref/event_button.asp
您可以通过在您的函数中抛出一个 debugger
并检查您的 e
变量来验证这一点
JSFiddle: http://jsfiddle.net/qf3u8m61/
试试这个。创建自定义事件并附加 buttons
属性。
$('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);
所以根据我认为你想要完成的事情。你想为 onmousemove 设置一个事件处理程序,你正在检查按钮是否按下(不管哪个按钮按下)但是你想手动触发事件并使条件 is_dragging 为真.
如果事件是使用 $('table').trigger('mousemove');
手动触发的,事件将没有按钮 属性 但是它会有一个 .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');
})