你会怎么解决?它应该在鼠标按钮按下并且鼠标离开 (#List) ... 时滚动
这就是我同时所做的,但我不知道如何检查是否发生了 jQuery mouseenter 事件以及鼠标按钮是否按下...
$('#List').mouseleave(function(){
var api = $(scrollPane).data('jsp');
while ( ??? ){
api.scrollByY(50, false);
}
});
有什么建议么?
你会怎么解决?它应该在鼠标按钮按下并且鼠标离开 (#List) ... 时滚动
这就是我同时所做的,但我不知道如何检查是否发生了 jQuery mouseenter 事件以及鼠标按钮是否按下...
$('#List').mouseleave(function(){
var api = $(scrollPane).data('jsp');
while ( ??? ){
api.scrollByY(50, false);
}
});
有什么建议么?
永远不要将 Javascript 置于“忙碌”循环中。它会使您的浏览器无响应。
假设您想要什么是可能的(我不确定是不是,因为在一个元素中开始并在另一个元素中结束的事件很棘手),您需要类似:
function doScroll() {
api.scrollByY(50, false);
}
$('#List').mouseleave(function(ev) {
var timer = null;
if (ev.which) { // if a button is pressed
timer = setInterval(doScroll, 200); // regularly call 'doScroll'
$(document).one('mouseup', function() { // and register a one-off mouseup
clearInterval(timer); // which stops the timer
timer = null;
}
}
});
注意:未经测试,可能无法正常工作,可能存在遗漏和错误等。
谢谢你们的快速响应!在研究了很多事件和 setInterval 的东西之后,我对这个话题有了更多的了解......但还有一件事:ev.which
无论我在离开“#List”时是否按住鼠标左键,总是“1”......当我按住鼠标右键或鼠标中键,它会更改为 2 和 3 ...与事件属性按钮相同,是否按住鼠标左键没有区别...