1. 程式人生 > >滑鼠懸浮事件與閃爍問題的處理

滑鼠懸浮事件與閃爍問題的處理

使用mouseenter/mouseleave代替mouseover/mouseout 

前組事件不繫結子元素;後者反之

推薦使用hover()+callback()

純css偽類也能實現懸浮事件

Demo:
<style>
html{
    font-size: 12px;
}
div,span{
    border: 1px #ccc solid;
}

div{
	width: 50px;
	height: 50px;
	display: none;
	
}
button:hover+div{
	display: block;
}
</style>
<body>    
	
  		<button>click</button>
  		<div><span>子元素</span><br>div元素</div>
  	
</div>
<script>
	$("button").mouseover(function(){
		$("div").css({
			"display":"block",
		});
		console.log("mouseover");
	});

	$("div").mouseout(function(){
		$("div").css({
			"display":"none",
		});
		console.log("mouseout");
	});
</script>
</body>


滑鼠指向這個按鈕顯示div;

滑鼠指向子元素時不呼叫mouseout;


滑鼠離開子元素時,mouseout 呼叫兩次;


滑鼠先進入父物件再進入子物件,呼叫兩次

得出結論:

    mouseover 事件會繫結本身以及子物件,當滑鼠進入span時,先是div相應了事件,然後div消失引起span的mouseout,第二次相應了事件。

    當進入的位置位於span中,離開span會響應一次事件,導致div消失進而引起第二次響應

參考:

W3School線上測試工具 V2  http://www.w3school.com.cn/tiy/t.asp?f=jquery_event_mouseenter_mouseover

W3School線上測試工具 V2  http://www.w3school.com.cn/tiy/t.asp?f=jquery_event_mouseleave_mouseout