jQuery setInterval / hovering: он работает один раз, но затем останавливает setInterval - PullRequest
2 голосов
/ 11 апреля 2011


У меня проблема с моей функцией 'setInterval', я хотел бы запустить эту функцию, когда я парю с моим дивом, но setInterval работает только в первый раз, когда я наведите курсор на div =>, еслия остаюсь на div, он не меняет картинку, но останавливает setinterval.

Это проблема с mouseenter?я пытался «зависнуть» и т. д., но ничего не помогло.

У кого-нибудь есть решение?

Большое спасибо за вашу помощь, вот мой код:

img.bind('mouseenter', function(){
    setInterval(next($(this)),1000);
});

function next(elem){  
    var img_li = elem.find('li');  
    count++;  
    if (count>2) count=0;  

    img_li.eq(count).fadeIn('fast', function(){  
        img_li.eq(current).css({'display':'none'});

        current = count;  
    });  
}

Ответы [ 2 ]

2 голосов
/ 11 апреля 2011

Вы можете рассмотреть возможность использования плагина jQuery Timers , который облегчает работу с такими функциями. В частности, обратите внимание на следующее:

everyTime (интервал: целое число | строка, [метка = интервал: строка], функция: функция, [времена = 0: целое число])

everyTime добавит определенную функцию (fn) в качестве временного события, которое будет запускаться через заданный интервал времени (интервал) в течение заданного количества раз (раз). Если times установлен в 0, количество вызовов метода не ограничено. Для заданного временного события также устанавливается метка для предоставленной строки (метки) или для строкового представления предоставленного интервала. Кроме того, интервал можно определить, используя строку, например «3 с», в течение 3 секунд.

2 голосов
/ 11 апреля 2011

Это потому, что вы присваиваете setInterval возвращаемое значение next ($ (this)), а не самой функции.

Попробуйте это:

img.bind('mouseenter', function(){     
    var that = $(this); //Use that-this model to avoid any scope issues with this reference
    setInterval(function(){
        next(that);
    },1000); 
}); 
...