在我的情况下,当悬停<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毫秒会影响在我的功能?
答案 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();})
});
})