jQuery Autosize插件错误 - 中间值(...)不是函数

use*_*ser 44 jquery autogrow

我使用jQuery Autosize插件:

http://www.jacklmoore.com/autosize/

您可以在此处看到脚本本身:

http://www.jacklmoore.com/js/jquery.autosize.js

这是我使用脚本的方式:

jQuery(function($){$(document).ready(function(){
$('textarea').autosize();
}
Run Code Online (Sandbox Code Playgroud)

问题N 1

刚刚将脚本更新到最新版本并停止工作:

"TypeError: (intermediate value)(...) is not a function"
Run Code Online (Sandbox Code Playgroud)

Javascript控制台在脚本的最后一行报告此错误:

}(window.jQuery || window.$)); 
Run Code Online (Sandbox Code Playgroud)

问题N 2

脚本在模态窗口(PrettyPhoto)中不起作用,javascript控制台不显示任何错误.

有任何想法吗?

ppo*_*ma1 147

所述"TypeError: (intermediate value)(...) is not a function" 弹起为丢失之前所述一个它引发错误上的功能的半结肠的结果.它可能很简单:

jQuery(function($){$(document).ready(function(){
$('textarea').autosize();
}  
); //<-----
Run Code Online (Sandbox Code Playgroud)

或者它可能是之前声明的函数.以下是此原因的示例:

var populate = function(sw) {
  myglobalswitch = sw;
  window.setTimeout(repopulate, 250, sw);
}

(function( $ ) {
$.widget( "custom.combobox", {
_create: function() {
....
})( jQuery );
Run Code Online (Sandbox Code Playgroud)

结果中间值不是......在最后一行:})( jQuery );

但是,修复程序是在populate函数中添加一个半冒号:

var populate = function(sw) {
  myglobalswitch = sw;
  window.setTimeout(repopulate, 250, sw);
}  ;
Run Code Online (Sandbox Code Playgroud)

防止解析器认为"var populate = ..."和(function($)...是单个语句,第二个从第一个扩展.

  • 如果在对象之后声明IIFE,也不以分号结尾,也会发生这种情况.当'option strict'打开时会发生这种情况. (2认同)

eng*_*ave 7

FWIW自动调整大小调用方法已更改.如果你最终在这里并使用它与jQuery

以前是

$('textarea').autosize();
Run Code Online (Sandbox Code Playgroud)

新的调用是

autosize($('textarea'));
Run Code Online (Sandbox Code Playgroud)