既然你想简单地显示在鼠标悬停的元素,然后把它隐藏鼠标移开时,你也应该使用mouseout()
定义当鼠标被删除你想所需的行为:
$("#show")
.mouseover(function(){
$(".fileinputs").toggle();
})
.mouseout(function(){
$(".fileinputs").toggle();
});
Example。 (这是不稳定的,因为fileinputs
是一个单独的元素,它不会盘旋在展览div上盘旋)。
但是,你应该使用悬停,只是为了更容易:
$("#show").hover(function(){
$(".fileinputs").show();
}, function(){
$(".fileinputs").hide();
});
Example。 (因为与上述相同的原因而Ch))。
由于您的期望行为是明确的,因此我们将在鼠标移过时使用show()
,并在移除鼠标时使用hide()
。
顺便说一句,最好是你使用delegate()
(旧版本的jQuery)或on()
(jQuery的1.7+)事件绑定:
$(document).on("mouseover mouseout", "#show", function(){
$(".fileinputs").toggle();
});
Example。
虽然,你真的应该使用CSS来做到这一点。你可以把里面fileinputs
的show
和使用儿童选择:
#show:hover > .fileinputs {
display: block;
}
Example。这个不会闪烁,因为元素在附着了悬停声明的元素内部,CSS认为它好像仍然在父元素上方悬停(因为在技术上,因为悬停的目标是在父母的边界[如果因为元素仍然嵌套在边界之外,它仍然可以工作])。
我不知道我明白 - 你想要div显示onmouseover,然后隐藏onmouseout? – Purag 2011-12-30 04:45:30
。只有当div不重叠时,hover()事件才能正常工作。 – Daniel 2011-12-30 04:47:12
你应该把'div.fileinputs'放在元素中,否则jQuery会认为它是一个新元素http://jsfiddle.net/rXYA9/2/ – noob 2011-12-30 04:47:50