0

你会怎么解决?它应该在鼠标按钮按下并且鼠标离开 (#List) ... 时滚动

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

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

有什么建议么?

4

2 回答 2

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;
        }
    }
});

注意:未经测试,可能无法正常工作,可能存在遗漏和错误等。

于 2011-03-21T12:00:56.547 回答
0

谢谢你们的快速响应!在研究了很多事件和 setInterval 的东西之后,我对这个话题有了更多的了解......但还有一件事ev.which无论我在离开“#List”时是否按住鼠标左键,总是“1”......当我按住鼠标右键或鼠标中键,它会更改为 2 和 3 ...与事件属性按钮相同,是否按住鼠标左键没有区别...

于 2011-03-21T13:54:06.953 回答