一、 mouseover 和mouseenter的區別
mouseover: 只要鼠標指針移入事件所綁定的元素或其子元素,都會觸發該事件
mouseenter: 只有鼠標指針移入事件所綁定的元素時,才會觸發該事件
換句話說就是,如果一個元素沒有子元素,那么該元素綁定mouseover或者mouseenter兩種事件效果沒有區別,鼠標每次移入元素時都只會觸發一次事件;如果綁定了mouseover事件的元素存在子元素,那么,每次移入該元素時都會觸發一次事件(包括從外部移入和從子元素移入),移入子元素時也會觸發一次事件。
一個是鼠標自動在綁定的元素或者子元素就可以觸發,一個是必須移動在綁定的元素才能觸發
1、mouseover和mouseout會有事件冒泡,也就是說鼠標移入、移出當前元素的子元素或父元素時都會觸發該事件。
2、mouseenter和mouseleave 事件不會冒泡,依舊是說鼠標移入、移出時,單簽元素的子元素或父元素不會觸發該事件。
二、事件傳播的機制(冒泡和捕獲), 使用代碼來驗證, 事件冒泡和事件捕獲的區別
事件捕獲(event capturing):當鼠標點擊或者觸發dom事件時,瀏覽器會從根節點開始由外到內進行事件傳播,即點擊了子元素,如果父元素通過事件捕獲方式注冊了對應的事件的話,會先觸發父元素綁定的事件。
事件冒泡(dubbed bubbling):與事件捕獲恰恰相反,事件冒泡順序是由內到外進行事件傳播,直到根節點
事件冒泡: 多個元素嵌套,有層次關系,這些元素都注冊了相同的事件,如果里面的元素的事件觸發了, 外面的元素事件自動觸發。由內向外。
事件捕獲: 多個元素嵌套,有層次關系,這些元素都注冊了相同的事件,如果里面的元素的事件觸發了, 外面的元素事件自動觸發。由外向內。
addEventListener("沒有on的事件類型","事件處理函數","控制事件階段") 事件控制階段中 :false:冒泡階段 true:捕獲階段
e.eventPhase 判斷事件階段(冒泡和捕獲不能同時出現)
三、阻止事件的默認行為, 事件冒泡和事件捕獲可以阻止嗎? 怎么阻止?
阻止事件的傳播:
• 在W3c中,使用stopPropagation()方法
• 在IE下設置cancelBubble = true;
在捕獲的過程中stopPropagation();后,后面的冒泡過程也不會發生了~
阻止事件的默認行為,例如click <a>后的跳轉~
• 在W3c中,使用preventDefault()方法;
• 在IE下設置window.event.returnValue = false;
1.setInterval的 this指向
setInterval的 this指向 是window
2. 怎么設置自定義屬性
自定義屬性:element.setAttributet("屬性 ") 設置屬性
3.怎么阻止事件冒泡阻止事件冒泡: e.stopPropagation(); 谷歌火狐阻止事件冒泡的方法
e.cancelBubble = true; IE8及以前版本瀏覽器阻止冒泡的方法