45

我使用 jQuery Autosize 插件:

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

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

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

这就是我使用脚本的方式:

jQuery(function($){$(document).ready(function(){
$('textarea').autosize();
}

问题 N 1

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

"TypeError: (intermediate value)(...) is not a function"

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

}(window.jQuery || window.$)); 

问题 N 2

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

有任何想法吗?

4

3 回答 3

149

由于"TypeError: (intermediate value)(...) is not a function" 在函数上缺少分号而在它引发错误之前弹出该函数。它可能很简单:

jQuery(function($){$(document).ready(function(){
$('textarea').autosize();
}  
); //<-----

或者它可能是之前声明的函数。此代码中的一个示例说明了这种情况:

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

(function( $ ) {
$.widget( "custom.combobox", {
_create: function() {
....
})( jQuery );

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

但是,修复是在填充函数中添加一个分号:

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

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

于 2014-08-20T18:51:33.010 回答
7

FWIW autosize 调用方法已更改。如果您最终来到这里并与 jQuery 一起使用它

以前是

$('textarea').autosize();

新的调用是

autosize($('textarea'));
于 2015-08-12T14:25:35.797 回答
-1

您可能在需要之后在函数内部声明了一个函数。这是我的问题。

于 2017-02-01T21:28:32.110 回答