3

私の場合、ホバリング<div>するときは、<div>

しかし、一部の div では、ホバーされた要素の後に先頭に追加された要素を非表示にしたいと考えています。

これは私のコードとその作品です!

HTML :

<div class="one">
    <span class="content"></span>
</div>


<div class="two">
    <span class="content"></span>
</div>

jQuery :

$("div.one > .content").on("hover" , function(){
    var this_ = $(this);
    this_.prev(".top").remove();
});


$("div.two > .content").on("hover" ,function(){
    var this_ = $(this);
    setTimeout(function(){this_.prev(".top").remove();})
});

.oneどちらも同じ関数ですが、使用しているときに 2 番目の関数が影響する理由とタイミングが 0 ミリ秒である.two理由を知りたいのですが、関数に0 ミリ秒が影響するのはなぜですか?setTimeout()

デモ: http://jsfiddle.net/nShCy/

4

2 に答える 2

2

0 ミリ秒ではなく、4 ミリ秒の遅延です。

答えは簡単です。ホバー後に mouseenter が起動されるため、まだ存在しない要素を削除しようとしています。4 ミリ秒の一時停止と 4 ミリ秒未満で終了するホバー コールバックにより、期待どおりに動作します。

于 2013-01-31T10:47:10.473 に答える
-2
$(function(){

            $("div.one > .content").on("hover" , function(){
            var this_ = $(this);
            this_.prev(".top").remove();
        });


        $("div.two > .content").on("hover" ,function(){
            var this_ = $(this);
            setTimeout(function(){this_.prev(".top").remove();})
        });

})
于 2013-01-31T10:40:30.473 に答える