2013-04-18 67 views
1

見這張照片:jQuery的懸停事件類型打印爲鼠標懸停和的MouseEnter

enter image description here

這是一個錯誤或標準?

PS:mouse之後的參數只是一個標籤。

事件監聽

$ -> 
    $('.bigger-on-hover').hover (event) -> 

    console.log 'args' 
    console.log arguments 
    console.log @ 
    window.x = arguments 
    window.y = @ 
    console.log 'args' 
    console.log 'mouseover' 
    console.log event.type 
+1

你可以顯示來自事件監聽器的代碼嗎?你用過jQuery嗎? – ColBeseder

+0

是的。是。更新中... – juanpastas

回答

1

的mouseenter是在Internet Explorer中只,但在其他瀏覽器的jQuery模仿它。

您的event實際上是jQuery事件,所以它的類型是mouseenter。請使用event.originalEvent。你可以看到它的類型console.log(event.originalEvent.type)。在非IE中,該類型爲mouseover

jQuery偵聽到這個鼠標懸停事件,當它聽到它時,它檢查鼠標指針是否已經在該元素上,發現它不是,然後觸發了一個jQuery鼠標事件。然後,它將活動更改回mouseover,以便它在泡泡時具有正常效果。

當您使用.hover()時,jQuery會監聽這些進入和離開事件來觸發它的開啓和關閉。

1

jQuery.fn.hover是別名:

jQuery.fn.extend({ 
    hover: function(fnOver, fnOut) { 
     return this.mouseenter(fnOver).mouseleave(fnOut || fnOver); 

mouseenter那些和mouseleave方法本身也just shortcutsspecial treatment

console.log打印的對象不是凍結快照。如果在展開對象之前修改了對象,則會將修改後的版本記錄到控制檯。這就是發生在這裏的事情。