#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
-Итак, у меня есть эти 2 тега разделения.
<div id="div1">Hover me to show Div2</div>
<div id="div2">Div2</div>
-я установил непрозрачность div2 в 0 в CSS
-я хочу, чтобы при наведении курсора div2 его непрозрачность менялась с 0 на 1
-Итак, я поместил это в jQuery
$("#div2").mouseenter(function(){
$("#div2).fadeTo("fast", 1);
});
-и при наведении курсора он возвращается к 0
$("#div2").mouseleave(function(){
$("#div2).fadeTo("fast", 0);
});
-это работает отлично, но моя проблема в том, что при наведении курсора div2 более одного раза анимация ставится в очередь, и она будет выполнять анимацию наведения снова и снова
-я хочу, чтобы при повторном наведении курсора div2 предыдущая анимация была остановлена и была создана новая
как мне это сделать?
Я не могу использовать переход CSS3, потому что мне нужно запустить его на IE9, заранее спасибо, вот JSFiddle
Комментарии:
1. удалите хэш из идентификатора в html и используйте метод stop…
Ответ №1:
Вы можете сделать это так:
$(document).ready(function(){
$("#div2").mouseenter(function(){
$("#div2").stop( true, true ).fadeTo("fast", 1)
});
$("#div2").mouseleave(function(){
$("#div2").stop( true, true ).fadeTo("fast", 0)
});
});
JSFIDDLE: http://jsfiddle.net/d8MQb/3 /
Описание : http://api.jquery.com/stop /
Ответ №2:
используйте .stop()
:
$("#div2").stop().fadeTo("fast", 0);
и вам не нужно использовать #
здесь:
<div id="div2">Div2</div>
Ваша скрипка
Комментарии:
1. спасибо, это работает! но чем это отличается от stop(true,true)?
2.@Twish, если вы перейдете к документации, говорит
.stop( [clearQueue ] [, jumpToEnd ] )
api.jquery.com/stop
Ответ №3:
Используйте jQuery clearQueue: http://api.jquery.com/clearqueue /
$(document).ready(function(){
$("#div2").mouseenter(function(){
$("#div2").clearQueue().fadeTo("fast", 1)
});
$("#div2").mouseleave(function(){
$("#div2").clearQueue().fadeTo("fast", 0)
});
});
Пример JSfiddle: http://jsfiddle.net/d8MQb/2 /