Показать сообщение отдельно
  #2 (permalink)  
Старый 13.01.2014, 03:21
Geo Geo вне форума
Новичок на форуме
Отправить личное сообщение для Geo Посмотреть профиль Найти все сообщения от Geo
 
Регистрация: 12.01.2014
Сообщений: 2

На сколько я разобрался, дело в том, что при использовании jQuery можно задать более одного обработчика одному событию.
Например, при событии hover на .main_slider, такой код :
$('.main_slider').hover(function() {  alert('раз'); }
$('.main_slider').hover(function() {  alert('двас'); }

выдаст оба события, сначала первое, затем второе.

В вашем случае, каждый вызов функции inte(); добавляет для $('.main_slider') ещё один mouseleave с вызовом функции inte();

Т.е.
навели раз, и при mouseleave вызываеться inte();
навели два, и при mouseleave вызываеться inte();inte(); (т.е. создаются два таймера),

Решение:

либо делать $('.main_slider').unbind('mouseleave'); (и hover) в .mouseleave(function(){ , либо, заменить
$('.main_slider').mouseleave(function() {
	            inte();
	         });
на

$('.main_slider').mouseleave(function() {
	           interval = setInterval(function(){
	            $('.main_slider .rt_arrow').click();
	         }, 4500);
	         });

ПС: сам я только изучаю JS, так что возможно что-то упустил.

Последний раз редактировалось Geo, 13.01.2014 в 03:24.
Ответить с цитированием