1

このスクリプトを見てみましょう:

$('a').hover(function() {
    $('div').stop(c,j).fadeIn();
}, function() {
    $('div').stop(c,j).fadeOut();
});

c=0,j=0a何度か繰り返すと、div がフェードイン、フェードイン、そして… うんざりします。
を使用c=1,j=1すると、ほぼ希望どおりに動作しますが、jumpToEndパラメーターが原因でこの点滅効果が得られ、バグのように見えます。
最後に、私が欲しいのはc=0,j=1、しかし、私がオーバーインし、すぐにオーバーアウトしてバックインすると、アニメーションが停止し、次のフェード機能が起動せず、div が半分透明になります。なんで ?

別の視覚的な例。

私はこの問題に頻繁に遭遇し、なぜ何も見つからないのか疑問に思っています。(最後に覚えているのは jQuerystop()ページのコメントですが、コメントは削除されました。)

4

1 に答える 1

0

のすべての異なる使用法をよりよく比較したものを次に示します.stop(): http://jsfiddle.net/4v8Uk/13/

<div data-one="0" data-two="0" id="a">a</div>
<div data-one="1" data-two="0" id="b">b</div>
<div data-one="1" data-two="1" id="c">c</div>
<div data-one="0" data-two="1" id="d">d</div>

$("div").hover(function(){
    var d = $(this).data();
    $(this).stop(d.one,d.two).toggle("slow");
});

オプション a と b は、探しているものに近いようです。(0,0 と 1,0)

更新:なぜそれが起こるのかについての明確な答えはまだありませんが、jQuery が既に表示されているように要素を認識しているために発生すると考えているため、表示されません。なぜそれが .toggle() に影響しないのかわかりません。

ただし、アニメーションを .animate で再作成することで修正できます。

http://jsfiddle.net/4v8Uk/17/

$("div").hover(function(){
    var d = $(this).data();
    $(this).stop(d.one,d.two).animate({"opacity":"0", "height":"0px", "width":"0px"},"slow");
}, function(){
    var d = $(this).data();
    $(this).stop(d.one,d.two).animate({"opacity":"1", "height":"100px", "width":"100px"},"slow");
});
于 2013-01-31T19:23:39.923 に答える