首頁 >web前端 >js教程 >jquery:hover事件的取消和綁定的實作程式碼

jquery:hover事件的取消和綁定的實作程式碼

黄舟
黄舟原創
2017-06-26 11:11:391311瀏覽

下面小編就為大家帶來一篇jquery中取消和綁定hover事件的實作程式碼。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧

在網頁設計中,我們經常使用jquery去回應滑鼠的hover事件,和mouseover和mouseout事件有相同的效果,但是這其中如何使用bind去綁定hover方法呢?如何用unbind取消綁定的事件呢?

一、如何綁定hover事件

#先看以下程式碼,假設我們給a標籤綁定一個click和hover事件:

$(document).ready(function(){
  $('a').bind({
    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');
})

這段程式碼就可以正常的運行,那麼bind不能綁定hover?

其實不是,應該使用mouseenter 和mouseleave 這兩個事件來代替,(這也是.hover() 函數中使用的事件) 所以完全可以直接像這樣來引用:

$(document).ready(function(){
  $('a').bind({
    mouseenter: function(e) {
      // Hover event handler
      alert("mouseover");
    },
    mouseleave: function(e) {
      // Hover event handler
      alert("mouseout");
    },
    click: function(e) {
      // Click event handler
      alert("click");
    }
  });
});

因為.hover()是jQuery自己定義的事件,是為了方便使用者綁定呼叫mouseenter和mouseleave事件而已,它並非一個真正的事件,所以當然不能當做.bind ()中的事件參數來呼叫。

二、如何取消hover事件

大家都知道,可以使用unbind函數去取消綁定的事件,但只能取消透過bind綁定的事件, jquery中的hover事件是比較特殊的,如果透過這種方式去綁定的事件,則無法取消。

$("a").hover(function(){
  alert('mouseover');
}, function(){
  alert('mouseout');
})

取消綁定的hover事件的正確方式:

$('a').unbind('mouseenter').unbind('mouseleave');

三、總結

其實,這些問題可以去參看jquery官方的說明文檔,只是很少有人去看過,網上的大多數教程只是講解如何去使用這個方法,達到目的即止,並沒有深入的了解為什麼這麼寫?

如果你有什麼疑惑,歡迎留言留言。

以上是jquery:hover事件的取消和綁定的實作程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn