2013-07-11 54 views
89

jquery .mouseover().hover()函數有什麼區別?如果他們完全相同,爲什麼jQuery同時使用?何時選擇mouseover()和hover()函數

+4

這不是重複的問題。您提供的鏈接有mouseover和mouseenter事件,但我的鼠標懸停和懸停事件。 –

+1

它們與mouseover nad mouseleave相同,下面的接受答案並不準確...懸停功能會添加mouseenter和mouseleve事件,而不是mouseover和mouseout事件 –

+1

請參閱http://jsfiddle.net/arunpjohny/cZb5b/ 1 /將鼠標從'el'元素移動到'child'並檢查控制檯 –

回答

87

從文檔

.mouseover()source

綁定事件處理程序的 「鼠標懸停」 JavaScript事件,或者觸發元素上的事件。

.hover()source

綁定的一個或兩個處理程序的匹配元素,當鼠標指針進入元件被執行。

調用$(selector).hover(handlerIn, handlerOut)爲簡寫: $(selector).mouseenter(handlerIn).mouseleave(handlerOut);

.mouseenter()source

綁定的事件處理程序,當鼠標進入的元件要噴射,或者觸發元素上的處理程序。

mouseover當指針移動到子元素時觸發,而mouseenter僅在指針移動到綁定元素時觸發。

這意味着

正因爲如此,.mouseover()一樣.hover(),出於同樣的原因.mouseover()一樣.mouseenter()

$('selector').mouseover(over_function) // may fire multiple times 

// enter and exit functions only called once per element per entry and exit 
$('selector').hover(enter_function, exit_function) 
26

.hover()函數接受兩個函數參數,一個用於mouseenter事件,另一個用於mouseleave事件。

1

從官方文檔:(http://api.jquery.com/hover/

的.hover()方法結合處理程序兩者的mouseenter和鼠標離開事件。您可以使用它在鼠標位於元素內時簡單地將行爲應用於元素。

1

正如你可以在http://api.jquery.com/mouseenter/

讀取的的mouseenter JavaScript事件是專有到Internet Explorer。 由於事件的一般效用,jQuery模擬這個事件,所以 它可以在任何瀏覽器中使用。當鼠標指針進入元素時,此事件被髮送到 元素。任何HTML元素 都可以收到此事件。

6

您可以在jQuery doc頁面上試試http://api.jquery.com/mouseover/。這是一個很好的小交互式演示,它非常清晰,你可以真正看到自己。

總之,您會注意到當鼠標懸停在某個元素上時發生鼠標懸停事件 - 來自其子元素或父元素,但只有當鼠標從父元素移開時纔會出現鼠標輸入事件到元素。