2012-02-24 3 views
1

У меня проблема с этим кодом, функция mouseleave запускает IE без мыши, входящей сначала в div.JQuery mouseleave autofires на IE

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#<?php echo 'div_'.$reload_cont; ?>').mouseenter(function() { 

     var el = $(this); 
     var timeoutId = setTimeout(function() { 
      $('#<?php echo 'relo_'.$reload_cont; ?>').animate({opacity: 1}, 'slow'); 
     }, 500); 

     el.mouseleave(function() { 
      clearTimeout(timeoutId); 
      $('#<?php echo 'relo_'.$reload_cont; ?>').animate({opacity: 0}, 'slow'); 
     }); 
    }); 
}); 

</script> 

Я пробовал много способов, и ни один из них не работает.

Любая помощь здесь

+1

Можете ли вы показать свою разметку? – ShankarSangoli

ответ

2

Вы повторно связывании mouseleave событий каждый рабочий день в mouseenter событие срабатывает, попробуйте переместить обработчик mouseleave событий вне обработчика mouseenter события:

$(function() { 

    //notice the timeout variable is saved in a scope where both event handlers can access it 
    var timeoutId; 

    $('#<?php echo 'div_'.$reload_cont; ?>').mouseenter(function() { 

     timeoutId = setTimeout(function() { 
      $('#<?php echo 'relo_'.$reload_cont; ?>').stop().animate({opacity: 1}, 'slow'); 
     }, 500); 
    }).mouseleave(function() { 
     clearTimeout(timeoutId); 
     $('#<?php echo 'relo_'.$reload_cont; ?>').stop().animate({opacity: 0}, 'slow'); 
    }); 
}); 

Обратите внимание на использование .stop(), так что многократные анимации не стоят в очереди, если вы входите в мышь, а затем выходите в мышь много раз быстро.

Вот демо: http://jsfiddle.net/jasper/LJAqd/

Я испытал это в IE 8/7, и она работала, как ожидалось, но я не могу быть уверен, что он будет работать для реализации, потому что я не знаю структуру HTML вашего кода.

+0

Спасибо, это работает, у меня все еще есть старый код, но я решил переписать всю реализацию с земли. Это было проще, и выяснилось, что отключение мыши должно быть объявлено вне реализации mouseenter. Спасибо. – carcargi