2011-12-04 26 views
14

我正在使用Brian Cherne的hoverIntent.js插件進行項目。這是一個很棒的插件,但它似乎在jQuery 1.7.1中被破壞了。jQuery hoverIntent:'Uncaught TypeError:無法調用'undefined'的'apply'

我正在嘗試調試它,但我並不是那裏最高級的javascripter。誰能告訴我,我可能需要去尋找他的代碼來解決以下錯誤信息:

Uncaught TypeError: Cannot call method 'apply' of undefined

這就是我的Chrome控制檯告訴我。我只是不確定要改變什麼。

有代碼的插件,下面一行包含apply字符串

return cfg.over.apply(ob,[ev])}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob)},cfg.interval)}};

編輯

我應該張貼的鏈接Brian的全面註釋代碼英寸它在這裏:http://cherne.net/brian/resources/jquery.hoverIntent.js

EDIT 2

我的腳本如下

//#nav-main dropdown effects     
$('#nav-main ul li').hoverIntent(function() { 
    $(this).find('.dropdown').stop(true,true).slideToggle('500'); 
}); 
+0

謝謝你的所有錯誤信息。但基本上我們需要你的腳本代碼 – noob

+0

@micha - 編輯的問題包括它 – Brian

+0

這不一樣。 hoverIntent可以防止這種情況發生(http://dreamstarstudios.com/screencasts/2011-12-04_0509.swf)。如果沒有'hoverIntent',下拉菜單(因爲有很多)會在您懸停時快速排隊。如果有一個下拉列表,那麼你的建議會很好,但有很多「hoverIntent」更好。 – Brian

回答

29

基本上hoverIntent需要兩個函數或一個對象。

如果你只有一個功能,它會嘗試使用你的功能作爲對象,你不能應用一個功能!所以使用:

$('#nav-main ul li').hoverIntent(function() { 
    $(this).find('.dropdown').stop(true,true).slideToggle('500'); 
}, function(){}); 
+4

沒有什麼比謙虛... :) – Andreas

0

我有'視差'插件相同的問題。 我將jQuery librery版本從更改爲*jquery-1.10.2*. 並清除錯誤。

1

如果您使用的是一個對象而不是兩個函數,但沒有「out」屬性,則會出現相同的錯誤。我做到了。添加「out」以與@noob已經回答相同的方式修復它,只是語法不同,所以它可能有助於某人。

$('#nav-main ul li').hoverIntent({ 
    over: function() { 
    $(this).find('.dropdown').stop(true,true).slideToggle('500'); 
    }, 
    out: function() {} 
}); 
相關問題