为什么setTimeout()为0 ms。是影响我的功能

时间:2013-01-31 10:37:27

标签: jquery settimeout

在我的情况下,当悬停<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.two两者都是相同的函数,但我想知道为什么第二个函数在我使用setTimeout()时会影响,而时间是0毫秒,为什么0毫秒会影响在我的功能?

演示: http://jsfiddle.net/nShCy/

2 个答案:

答案 0 :(得分:2)

它不是0毫秒,而是4 ms delay

答案很简单:悬停后会触发mouseenter,因此您尝试删除尚不存在的元素。暂停4ms,悬停回调在不到4毫秒内完成,它按预期工作。

答案 1 :(得分:-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();})
        });

})