我必须在导航栏上显示一些内容(包含8个项目)。
我在导航栏上使用mouseover
来显示某组项目。问题是mouseover
太快了。有没有办法推迟这个事件?我只是想在鼠标上显示一些div(带数据)。
请注意我想在鼠标悬停时显示我的div并在鼠标离开时隐藏我的div。请建议我如何在鼠标事件中使用它?
我的示例代码: $(document).on(' mouseover',' .menu',function(argument){ $(this).find('。drop-down')。css(' display',' block'); }); $(document).on(' mouseout',' .menu',function(argument){ $(this).find('。drop-down')。css(' display',' none'); })
答案 0 :(得分:1)
你可以使用delay()函数,它可以帮助你获得所需的结果, 这是语法,
cdecl> explain const void *(*b[])(int , char (*(*)(char ))(double))
declare b as array of pointer to function (int, pointer to function (char) returning pointer
to function (double) returning char) returning pointer to const void
delay()方法设置一个计时器来延迟队列中下一个项目的执行。
这里有一个非常好的延迟函数示例 - jQuery delay() Method
答案 1 :(得分:0)
使用setTimeout
进行延迟(不仅对于jquery,由于可能取消执行,它优于delay
)。以下是菜单的示例:
timer = setTimeout(function(){
$this.find('.drop-down').show();
timer = null;
}, 400);
var timer;
var timerOut;
$(document).ready(function(){
$('.menu').on('mouseover', function(){
var $this = $(this);
// clear existing timer to prevent showing another dropdown
if(timer) {
clearTimeout(timer);
}
timer = setTimeout(function(){
$this.find('.drop-down').show();
timer = null;
}, 400);
});
$('.menu').on('mouseout', function(){
var $this = $(this);
timerOut = setTimeout(function(){
$this.find('.drop-down').hide();
timer = null;
}, 400);
});
});
.menu{
font-size:14px;
background: lightgreen;
}
.drop-down{
display:none;
font-size:12px;
padding-left:10px;
background: lightblue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="menu">
<a>Menu1</a>
<div class="drop-down">drop1.1</div>
<div class="drop-down">drop2.1</div>
</div>
<div class="menu">
<a>Menu2</a>
<div class="drop-down">drop1.2</div>
<div class="drop-down">drop2.2</div>
</div>