2012-01-05 3 views
9
$(document).ready(function(){ 
    $("#menu a").hover(function(){ 
     $(this).animate({opacity: 0.25}, function(){ 
      $(this).animate({opacity: 1}); 
     }); 
    }); 
}); 

Я применил этот эффект к своему меню, поэтому, когда мышь переходит по ссылке, он показывает этот эффект затухания, но когда мышь от него освобождается, эффект снова воспроизводится. Это не должно. Он должен воспроизводиться только один раз, когда мышь находится над ссылкой, а не в другое время, когда мышь отсутствует.Событие наведения срабатывает дважды (при входе и выходе) в jQuery?

ответ

16

.hover() имеет два обратных вызова, один для mouseover и один для mouseout.

Вы, вероятно, лучше с mouseover:

$(document).ready(function(){ 
    $("#menu a").mouseover(function(){ 
     $(this).animate({opacity: 0.25}, function(){ 
      $(this).animate({opacity: 1}); 
     }); 
    }); 
}); 
+0

Событие jQuery '.hover()' обрабатывает 'mouseenter' и' mouseleave', а не 'mouseover' и' mouseout'. – Gavin

+1

Текущий метод заключается в использовании '' '.on (" mouseover ")' ''] (http://api.jquery.com/on/) – developius

+0

@developius: '.mouseover()' является ярлыком для ' .on ('mouseover') ' – Blender

1

Try:

 

$("#menu a").hover(
    function() { 
    $(this).animate({opacity: 0.25}, function(){ 
      $(this).animate({opacity: 1}); 
     }); 
    }, 
    function() { 
    //do nothing 
    } 
); 

 
2

попробовать это. добавить $ (это) .stop() на событие hoverout

$(document).ready(function() { 
      $("#menu a").hover(function() { 
       $(this).animate({ opacity: 0.25 }, function() { 
        $(this).animate({ opacity: 1 }); 
       }); 
      }, function() { $(this).stop(); }); 
     }); 
5

попробовать это с JQuery v1.7

$('#menu a').on({ 
    mouseover: function() { 
     event.preventDefault(); 
     $(this).animate({opacity: 0.25}); 
    }, 
    mouseout: function() { 
     event.preventDefault(); 
     $(this).animate({opacity: 1}); 
    } 
}); 

working DEMO

+0

действительно хороший ответ –

0

вы должны проверить это вы получите тот же объект или нет

пример:

$('#updateCart').on('mouseenter', function (event) { 
     if (event.handled !== true) { ..... 
        //Put your code in here 
      } 
} 
Смежные вопросы