これはかなり簡単な方法ですが、理解できないようです。
基本的に私はdivにフェードインし、ホバー時に他をフェードアウトするjqueryホバーを持っています。
数回すばやくオンとオフを繰り返すと、約3〜4秒間脈動して、すべてのフェードイン/フェードアウトが終了します。
私は通常、これらのことを.stop()で停止しますが、ここではうまくいかないようです。 an` $( "。txtWrap")。stop()。hover()の前にボタンから移動した場合、フェードインを強制終了するにはどうすればよいですか。
$(".txtWrap").stop().hover(
function () {
$(this).find('.txtBock').fadeOut();
$(this).find('.txtDesc').fadeIn();
},
function () {
$(this).find('.txtBock').fadeIn();
$(this).find('.txtDesc').fadeOut();
}
)
stop()
が間違っています。
これを試して:
_$(".txtWrap").hover(
function () {
$(this).find('.txtBock').stop().fadeOut();
$(this).find('.txtDesc').fadeIn();
// $('#timeTxt').fadeOut();
// $('#timeTxtDesc').fadeIn();
},
function () {
$(this).find('.txtBock').fadeIn();
$(this).find('.txtDesc').stop().fadeOut();
}
)
_
編集:
これにより、要素を非表示にすることなく、要素の不透明度がアニメーション化されます。それらを非表示にする場合は、.hide()
を使用します。アニメート関数にコールバックを追加する必要があります。
_$(".txtWrap").hover(
function () {
$(this).find('.txtBock').stop().animate({opacity:0}, 500);
$(this).find('.txtDesc').animate({opacity:1}, 500);
// $('#timeTxt').fadeOut();
// $('#timeTxtDesc').fadeIn();
},
function () {
$(this).find('.txtBock').animate({opacity:1}, 500);
$(this).find('.txtDesc').stop().animate({opacity:0}, 500);
}
)
_
これらの回答がどれも私にとってうまくいかなかったので、私はこれを投稿すると思いました。
*真のパラメータは、キューをクリアしてアニメーションの最後に移動するようにストップに指示します
$(".txtWrap").stop().hover(
function () {
$(this).find('.txtBock').stop(true, true).fadeOut();
$(this).find('.txtDesc').fadeIn();
},
function () {
$(this).find('.txtBock').fadeIn();
$(this).find('.txtDesc').stop(true, true).fadeOut();
}
)
リンク: http://forum.jquery.com/topic/jquery-hover-events-cant-keep-up-with-fadein-and-fadeout-events-queue
このような場合には、ブライアンチャーンの天才に目を向けます .hoverIntent()
plugin -非常にスムーズです...実行する前にユーザーが十分にスローダウンするまで待機します。必要に応じて構成できます。
プラグインを含めて(十分短いため、スクリプトファイルに直接配置することもあります)、Wordを追加しますIntent
:
$(".txtWrap").hoverIntent(
function () {
$(this).find('.txtBock').fadeOut();
$(this).find('.txtDesc').fadeIn();
},
function () {
$(this).find('.txtBock').fadeIn();
$(this).find('.txtDesc').fadeOut();
}
)
スーパーインテリジェントSO検索エンジンがこの質問を強調してくれたとき、私は同様の質問を投稿しようとしていたので、後世のための独自のソリューションを投稿したいと思いました。
私はuser113716の解決策を取り、少し具体化しました。私の場合、非表示にして表示していたdivは_display:none
_として始まったので、CSSに_opacity:0
_を追加し、アニメーションを開始する前にjQueryに.css({display:block})
を設定するように指示する必要がありました。不透明度を_1
_にフェードインします。
フェードアウトでは必要ありませんでしたが、不透明度をゼロにアニメーション化した後、.hide()
divにコールバックを追加しました。
これが私が最終的に何をしたのかを説明するフィドルです:
http://jsfiddle.net/mblase75/wx2MJ/
関連するJavaScript:
_$('li').mouseover(function() {
$(this).addClass('hover');
$('#' + $(this).data('divid')).stop().css({
display: 'block'
}).animate({
opacity: 1
}, 500);
});
$('li').mouseout(function() {
$(this).removeClass('hover');
$('#' + $(this).data('divid')).stop().animate({
opacity: 0
}, 500, function() {
$(this).hide();
});
});
_
あなたがこれを持っているなら:
$("#frase1").fadeIn(5000, function(){
$("#frase2").fadeIn(10000, function(){
$("#frase3").fadeIn(15000, function(){
});
});
});
了解しました。次の命令を使用して、fadeInまたはキュー内の他のイベントをリセットする必要があります。
$("#frase1").stop(false,true, true);
$("#frase2").stop(false,true, true);
$("#frase3").stop(false,true, true);