【问题标题】:jQuery hoverIntent: 'Uncaught TypeError: Cannot call method 'apply' of undefined'jQuery hoverIntent:'未捕获的类型错误:无法调用未定义的方法'应用''
【发布时间】:2011-12-04 09:49:59
【问题描述】:

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

【问题讨论】:

  • 感谢您提供的所有错误消息。但基本上我们需要你的脚本代码
  • @micha - 编辑问题以包含它
  • 不一样。 hoverIntent 防止这种效果发生(dreamstarstudios.com/screencasts/2011-12-04_0509.swf)。如果没有hoverIntent,下拉菜单(因为其中有很多)会在您悬停时快速排队。如果有一个下拉菜单,那么您的建议会很好,但如果有很多,hoverIntent 会更好。
  • @micha 观看视频以查看问题
  • 行得通,谢谢!如果您想要回答问题的声誉,您可以发布作为答案。

标签: javascript jquery debugging syntax


【解决方案1】:

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

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

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

【讨论】:

  • 没有什么比谦虚... :)
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-31
      • 2011-11-12
      • 2013-09-14
      • 2013-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多