Цикл до jQuery mouseenter (); происходит и в то время как mousedown - PullRequest
0 голосов
/ 21 марта 2011

Как бы вы решили это? Она должна прокручиваться, когда кнопка мыши нажата, а мышь оставила (#List) ...

Это то, что я сделал между тем, но я не знаю, как проверить, произошло ли событие jQuery mouseenter и нажата ли кнопка мыши ...

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

Есть предложения?

Ответы [ 2 ]

3 голосов
/ 21 марта 2011

Никогда, никогда не помещайте 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;
        }
    }
});

Примечание: не проверено, может не работать, возможны пропуски и ошибки и т. д.

0 голосов
/ 21 марта 2011

Спасибо за быстрый ответ!Изучив много событий и событий setInterval, я узнал намного больше об этой теме ... , но все же одна вещь : ev.which всегда равна "1", когда я удерживаю левую кнопку мыши, оставляя "#List "или нет ... когда я удерживаю правую или среднюю кнопку мыши, она меняется на 2 и 3 ... то же самое с кнопкой свойства события, не имеет значения, удерживая левую кнопку мыши или нет ...

...