2013-02-01 47 views
0

我想以最簡潔的方式在骨幹事件中使用HoverIntent jQuery插件。骨幹應用中的HoverIntent

這裏是(簡化爲清楚起見)事件:

events: 
'mouseenter'      : 'onMouseEnter' 
'mouseleave'      : 'onMouseLeave' 

onMouseEnter: -> 
    @$('.foo').show()  

onMouseLeave: -> 
    @$('.foo').hide() 

基本上,我不希望herky生澀顯示和隱藏有人跑在頁面上鼠標,所以HoverIntent似乎是要走的路。我已經包含在我的項目中,它已經準備好了......但我不清楚如何在骨幹視圖中正確調用它。建議?

回答

1

有一些不同版本的hoverintent添加了您應該能夠在Backbone中使用的自定義事件。看看:https://github.com/LeMisterV/jquery.hoverintent。您應該可以使用mouseenterintentmouseleaveintent

+0

謝謝。這些事件是我需要的! –

+0

對我來說,這些在插件的第120行上拋出'TypeError:$ .event.handle是未定義的'。使用普通的老鼠'mouseenter'和'mouseleave'可以正常工作,但無法讓意圖部分工作。 –

+0

http://stackoverflow.com/questions/16527658/jquery-error-typeerror-event-handle-is-undefined –

1

請注意,接受的答案中的插件不再被維護並調用折舊的jQuery函數。通過在插件的第120行替換$.event.handle.call(this.elem, this.event)$.event.dispatch.call(this.elem, this.event),可以更新插件以使用當前版本的jQuery。

但是,即使在修補兼容性問題之後,我發現該插件對我的目的而言太刺激並且沒有反應。相反,我通過用setTimeout檢查來包裝我的mouseenter/mouseleave回調來欺騙hoverintent功能集,以查看元素是否仍被徘徊。例如:

function eventCallback(){ 
    setTimeout(function() { 
     if ($(e.target).is(":hover")) { 
      //do your code 
     } 
    }, 100); 
} 

根據您的喜好調整超時定時器,僅當用戶在某個延遲後繼續盤旋時才執行該功能。