9

几个月来第一次(脸红),我升级了我的 jQuery 东西。我现在在:

  • jquery-1.9.1.js
  • jquery-ui-1.10.2.custom.js(使用 ThemeRoller,并包含所有组件,包括 Effects Core,在其描述中提到了缓动)

我还升级到了最新版本的 jquery.multiselect 和 jquery.multiselect.filter 插件。当我尝试关闭其中一个多选菜单时,出现此错误:

TypeError: jQuery.easing[this.easing] is not a function
jquery-1.9.1.js (line 9033)

请注意,虽然我在发生错误时使用了多选插件,但实际错误在主 jQuery 文件中。代码是:

/*9031*/ if ( this.options.duration ) {
/*9032*/   this.pos = eased = jQuery.easing[ this.easing ](
/*9033*/     percent, this.options.duration * percent, 0, 1, this.options.duration
/*9034*/   );
/*9035*/ }

我忘了更新一些文件吗?谷歌搜索,其他有同样抱怨的人似乎都在尝试使用某种额外的缓动插件,但我不是。

4

6 回答 6

14

首次升级到 jQuery 1.9.+ 时,整个站点的各种动画中可能会发生此错误,因为缓动效果名称已更改!

请参阅http://api.jqueryui.com/easings/ 没有帮助的是 jQueryUI.com 站点中的旧示例尚未更新,导致人们认为旧的动画示例名称是正确的。

示例: 手风琴面板“bounceslide”动画现在是一个名为“ easeOutBounce ”的关闭版本。在撰写本文时,字符串“bounceslide”仍在网站的示例中:http: //api.jqueryui.com/accordion/#option-animate

在遵循动画类型中提到的超链接并在我的代码中尝试新名称后,我才意识到动画名称已经改变。

于 2013-08-15T04:37:56.767 回答
10

包括:

<script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>    

注意:如果需要,请更新 jquery UI 版本。

于 2013-11-07T01:23:39.440 回答
2

无效的第二个参数问题

如果这有助于有人像我遇到此错误时那样偶然发现这个问题,我将添加另一个可能的解决方案。我的错误是由于我的fadeIn函数的第二个参数不是在动画完成时执行的“回调”函数。如果第二个参数不是函数,jQuery 期望它是一种缓动类型。我的第二个论点错误地是一个对象——我认为它是一个函数

所以,对我来说,

return {
  enter: function(element,classes,done){ //classes variable incorrectly added, making done an object
    element.fadeIn(1000,done);
  }
};

变成:

return {
  enter: function(element,done){ //remove classes variable as wasn't right for this situation - done is now a function
    element.fadeIn(1000,done);
  }
};

请注意,传递给我的匿名enter函数的参数更改。对我来说重要的是,这些变量是 AngularJS 注入,所以它们的顺序很重要,而不是它们的名字。

于 2016-05-19T10:38:00.683 回答
1

当错误地使用效果方法时,参数反转可能会引发错误,.show(duration, easing)因为它会导致调用无效缓动。

正确的符号是.show(easing, duration) https://api.jquery.com/show/

var duration = 'slow', easing = 'linear';
$("#correct").click(function() {
  $("p").show(duration, easing);
});
$("#error").click(function() {
  $("p").show(easing, duration); // fails -> see error in console
});
p { background: yellow; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
$("p").show(
<button id="correct">duration, easing</button>
<button id="error">easing, duration -> ERROR</button>
)
<p style="display: none">Hello</p>

于 2020-05-30T12:26:58.320 回答
0

这与版本完全无关。

我有这段代码并得到了同样的错误:

$("#consoleBtn").click(function(){
    $("#consolePanel").toggle("display", {  from : { display: "block" }, to : { display: "none" } });
});

问题是我传递给切换函数的参数。所以我改为:

$("#consoleBtn").click(function(){
    $("#consolePanel").toggle();
});

所以在调用 jQuery-api 时要注意传递给你的函数的参数。希望这可以帮助。

于 2020-01-21T07:42:44.137 回答
0

感谢@Legionar 的评论,升级到他建议的版本1.13对我有用:

https://github.com/ehynds/jquery-ui-multiselect-widget/archive/1.13.zip

在此版本中更新outerHeight(),函数的使用导致小部件定位错误,因为它错过了 css 位置top,将第 573 行更改为以下将解决问题:

top: pos.top + button.outerHeight(false),
于 2018-06-18T13:20:22.457 回答