jQuery中hover與mouseover與mouseenter的區別
以前一直以為在jquery中其實mouseover和mouseout兩個事件等於hover事件。但這兩個並不能等同。
<div class="wrapper">
< div class="img"></div>
< div class="text"></div>
< /div>
< div class="point"></div>
在wrapper上加事件,當滑鼠移動到wrapper上的時候讓class="point"的層放大。但如果用mouseover和 mouseout事件的話,當滑鼠移動到wrapper層後,point層會變大,
但當滑鼠在img和text層之間進行移動的時候,point層會變大變小,不停的變化。這並不是我們想要的結果,我們想要的是隻要滑鼠在wrapper層上,
無論是img還是text上,point就變大,但在滑鼠未移出 wrapper層的情況下,point層不變小。
慢慢思路也清晰了,我們不用mouseover和mouseout而用hover問題就解決了。
這麼簡單的問題我們竟然花了好長時間才解決,真是誇張。寫篇日誌以作紀念。
補充:jquery原始碼中有這麼一段:
hover: function( fnOver, fnOut ) {
return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
}
也就是說hover!= mouseover+mouseout。但hover=mouseenter + mouseleave
這2個是有區別的。 hover是指分別當滑鼠指標進入和離開元素時被執行的事件相當於mouseenter+mouseleave。而mouseover滑鼠進入某個元素或其子元素時觸發。 可參考mouseover和mouseenter的區別:http://www.w3school.com.cn/tiy/t.asp?f=jquery_event_mouseenter_mouseovermouseover事件與mouseenter事件的區別
不論滑鼠指標穿過被選元素或其子元素,都會觸發 mouseover 事件。對應mouseout
只有在滑鼠指標穿過被選元素時,才會觸發 mouseenter 事件。對應mouseleave
這樣的話,mouseenter子元素不會反覆觸發事件,否則在IE中經常有閃爍情況發生。
相關文章
- mouseenter與mouseover區別
- 區別mouseover與mouseenter?
- 【JavaScript】offset、client、scroll、mouseover和mouseenter區別JavaScriptclient
- 滑鼠事件css的:hover和js的mouseover有什麼區別?事件CSSJS
- jQuery中onload與ready區別jQuery
- WPF Button MouseEnter and MouseLeave together play as MouseOver
- jquery中append()方法與after()方法的區別jQueryAPP
- 淺談mouseenter和mouseover,mouseout和mouseleave
- 在JavaScript中,DOM物件與jQuery物件的區別與轉換JavaScript物件jQuery
- jQuery基礎與js的區別jQueryJS
- jQuery與JavaScript與ajax三者的區別與聯絡jQueryJavaScript
- JQuery的ready函式與JS的onload的區別jQuery函式JS
- Javascript中“==”與“===”的區別JavaScript
- Python中 ‘==‘ 與‘is‘的區別Python
- Java中(==)與equals的區別Java
- Java中類與物件的關係與區別Java物件
- jquery中prop和attr的區別jQuery
- Jquery中attr和prop的區別jQuery
- js中 let 與 var 的區別JS
- vue中sass與SCSS的區別VueCSS
- js中!和!!的區別與用法JS
- JavaScript 中substr與 substring 的區別JavaScript
- Vue 中ref()與 reactive() 的區別VueReact
- ??與?:的區別
- spring中的FactoryBean與ObjectFactory的區別SpringBeanObject
- Node中Exports與module.export的使用與區別Export
- jQuery中css()和attr()方法的區別jQueryCSS
- JQuery中html()和val()的用法區別jQueryHTML
- vue中 lang="ts"與js的區別VueJS
- StringUtils類中isEmpty與isBlank的區別
- JPA中PersistenceUnit與PersistenceContext區別Context
- devexpress中 cxTreeList 與 cxVirtualTreeList 區別devExpress
- Java中replace與replaceAll區別Java
- jquery $(this) 和this的區別jQuery
- JQuery this和$(this)的區別jQuery
- Vue的mode中 hash 與 history 的區別Vue
- Java中Statement與PreparedStatement與CallableStatement之間的區別 - javarevisitedJava
- MySQL中TEXT與BLOB欄位型別的區別MySql型別
- XML和HTML的主要區別、 jQuery 能做什麼?JavaScript中的“=、==、===”區別?XMLHTMLjQueryJavaScript