jQuery hoverIntent:'未捕获的TypeError:无法调用方法'apply'of undefined'

时间:2011-12-04 09:50:00

标签: javascript jquery debugging syntax

我正在使用Brian Cherne的hoverIntent.js插件进行项目。这是一个很棒的插件,但似乎在jQuery 1.7.1中被打破了。

我正在尝试调试它,但我不是那里最杰出的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

编辑2

我的脚本如下

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

3 个答案:

答案 0 :(得分:29)

基本上hoverIntent需要两个函数或一个对象。

如果只放入一个函数,它将尝试将您的函数用作对象,并且您无法应用函数!所以使用:

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

答案 1 :(得分:1)

如果您使用的是一个对象而不是两个函数,但没有“out”属性,则会出现相同的错误。我做到了。添加“out”修复它的方式与@noob已经回答的方式相同,只是语法不同,所以它可能对某人有帮助。

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

答案 2 :(得分:0)

我对'视差#39;有同样的问题。插入。 我从*jquery-1.6.4*将jQuery库版本更改为*jquery-1.10.2*. 并且错误已清除。