jquery中取消和綁定hover事件的正確方式


在網頁設計中,我們經常使用jquery去響應鼠標的hover事件,和mouseover和mouseout事件有相同的效果,但是這其中其中如何使用on去綁定hover方法呢?如何用off取消綁定的事件呢?
一、如何綁定hover事件
先看以下代碼,假設我們給a標簽綁定一個click和hover事件:
$(document).ready(function(){ $('a').on({ hover: function(e) {

 //Hover event handler

alert("hover"); },

click: function(e) { // Click event handler

alert("click"); } });

});
當點擊a標簽的時候,奇怪的事情發生了,其中綁定的hover事件完全沒有反應,綁定的click事件卻可以正常響應。


但是如果換一種寫法,比如:
$("a").hover(function(){ alert('mouseover'); }, function(){
alert('mouseout'); })

應該使用 mouseenter 和 mouseleave 這兩個事件來代替,(這也是 .hover() 函數中使用的事件)
所以完全可以直接像這樣來引用:
$(document).ready(function(){ $('a').on({ mouseenter: function(e) {

//Hover event handler

alert("mouseover"); }, mouseleave: function(e) {

//Hover event handler

alert("mouseout"); }, click: function(e) {

// Clickevent handler

alert("click"); } });

});

因為.hover()是jQuery自己定義的事件,是為了方便用戶綁定調用mouseenter和mouseleave事件而已,它並非一個真正的事件,所以當然不能當做.on()中的事件參數來調用。
二、如何取消hover事件
大家都知道,可以使用off函數去取消綁定的事件,但是只能取消通過bind綁定的事件,jquery中的hover事件是比較特殊的,如果通過這種方式去綁定的事件,則無法取消。
$("a").hover(function(){ alert('mouseover'); }, function(){
alert('mouseout'); })
取消綁定的hover事件的正確方式:
$('a').off('mouseenter').unbind('mouseleave');




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM