2010-02-09 5 views
3

Я использовалStop fadeTo() в JQuery

$(document).ready(function() { 

$("#main ul li").hover(function(){ 

var fade = $('img.g-img', this); 
fade.fadeTo('slow', 0.5); 


$("#main ul li").removeClass("active"); 
$(this).toggleClass("active"); 

}); 


}); 

Я хочу, чтобы остановить увядает, когда MouseOut. Этот код не работает:

fade.stop().fadeTo('slow',1) 

Как я могу это сделать? Заранее спасибо.

ответ

4

Вам необходимо передать два параметра в hover. (А mouseenter обработчик и обработчик mouseleave)

Например:

$(document).ready(function() { 
    $("#main ul li").hover(
     function() { //mouseenter handler 
      var fade = $('img.g-img', this); 
      fade.fadeTo('slow', 0.5); 

      $("#main ul li").removeClass("active"); 
      $(this).toggleClass("active"); 
     }, 
     function() { //mouseleave handler 
      var fade = $('img.g-img', this); 
      fade.stop().fadeTo('slow',1) 
     } 
    ); 
}); 
+2

в вашем обработчике mouseleave, выцветание выходит за рамки. Вам нужно будет определить fade перед вызовом hover() или определить его в обработчике mouseleave. –

+0

@Kyle: Я забыл об этом; Благодарю. – SLaks

+0

Этот код работает отлично, спасибо! – 2010-02-10 15:34:03

2

fade переменная, которую определяют только в пределах объема обработчика событий. Кроме того, вам нужны два обработчика событий для hover(): один для входа мыши, а другой - при его выходе.

$(document).ready(function() { 
    $("#main ul li").hover(function() { 
    $(this).addClass("active").find("img.g-img").stop().fadeTo("slow", 0.5); 
    }, function() { 
    $(this).removeclass("active").find("img.g-img").stop().fadeTo("slow", 1); 
    }); 
}); 
+0

Hi cletus; Спасибо за помощь. Этот код не удаляет предыдущее замирание – 2010-02-10 15:35:28

Смежные вопросы