jquery - 为什么 setTimeout() 为 0 毫秒。影响我的职能

标签 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/

最佳答案

这不是 0 毫秒,而是 4 ms delay .

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

关于jquery - 为什么 setTimeout() 为 0 毫秒。影响我的职能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14623743/

相关文章:

javascript - HTML5 Canvas 改变图像颜色

javascript - AJAX 获取查询不会导致页面加载

javascript - 将正确的 "this"上下文传递给 setTimeout 回调?

Javascript-使用 boolean 值设置超时

javascript - 使用 jQuery UI toggleClass 在 2 个 CSS 类之间切换

javascript - 将 konva js Canvas 转换为图像并将这些图像加载到另一个 Canvas

javascript - jQuery setTimeout 问题

javascript - 使用 service worker 的带有通知的计时器

javascript - 循环中暂停并重新启动setTimeout

javascript - 将字符串(是一个函数)转换回 Javascript 中的函数