jQuery悬停意图:'未捕获类型错误:无法调用方法'应用'未定义的

发布于 2024-12-19 10:49:00 字数 910 浏览 1 评论 0原文

我正在为一个项目使用 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');
});

I'm using Brian Cherne's hoverIntent.js plugin for a project. It's a great plugin but it seems to be broken in jQuery 1.7.1.

I'm trying to debug it but I'm not the most ace javascripter out there. Can anyone tell me what I might need to look for in his code to fix the following error message:

Uncaught TypeError: Cannot call method 'apply' of undefined

That's what my Chrome console tells me. I'm just not sure what to change.

There is the following line of code in the plugin which contains apply in the string

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

EDIT

I should post the link to Brian's full commented code. It's here: http://cherne.net/brian/resources/jquery.hoverIntent.js

EDIT 2

My script is as follows

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

烙印 2024-12-26 10:49:00

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

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

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

Basically hoverIntent requires two functions or one object.

If you put in just one function, it will try to use your function as object and you can't apply a function! So use:

$('#nav-main ul li').hoverIntent(function () {
    $(this).find('.dropdown').stop(true,true).slideToggle('500');
}, function(){});
仅此而已 2024-12-26 10:49:00

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

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

If you are using one object instead of two functions, but without "out" property you would have same error. I did. Adding "out" fixes it in a same way as @noob already answered, just with different syntax, so it might help someone.

$('#nav-main ul li').hoverIntent({
  over: function () {
    $(this).find('.dropdown').stop(true,true).slideToggle('500');
  },
  out: function() {}
});
泪痕残 2024-12-26 10:49:00

我对“视差”插件也有同样的问题。
我将 jQuery 库版本从 *jquery-1.10.2* 更改为 *jquery-1.6.4*
错误已清除。

I had same problem with 'parallax' plugin.
I changed jQuery librery version to *jquery-1.6.4* from *jquery-1.10.2*.
And error cleared.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文