循环直到jQuery mouseenter();发生时和mousedown

时间:2011-03-21 11:25:00

标签: jquery scroll while-loop jscrollpane mouseleave

你会如何解决这个问题? 当鼠标按钮关闭且鼠标离开(#List)...

时,它应滚动

这就是我所做的同时,但我不知道如何检查,如果jQuery mouseenter事件发生以及鼠标按钮是否已关闭......

$('#List').mouseleave(function(){
    var api = $(scrollPane).data('jsp');
    while ( ??? ){
       api.scrollByY(50, false);
    }
});

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

永远不要将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;
        }
    }
});

注意:未经测试,可能无效,遗漏和错误可能等等。

答案 1 :(得分:0)

感谢您的快速回答!在研究了很多事件和setInterval之后,我对这个话题了解得更多... 但仍然有一件事ev.which总是“1”,而我按住鼠标左键离开“#List”或不...当我按住鼠标右键或鼠标中键时,它变为2和3 ...与事件属性按钮相同,按住鼠标左键没有区别...

相关问题