我已经在这一段时间了一段时间了:
我在Redmine中使用了jQuery和Prototype,这是一个RoR webapp。由于jQuery的noConflict,它们很好地发挥作用。
我的jqGrid工作正常。
现在这是我的问题:我正在尝试使用Table Filter plugin by PicNet 但我得到以下js错误:
this.each不是函数
原型.js的第862行
function collect(iterator, context) {
iterator = iterator || Prototype.K;
var results = [];
this.each(function(value, index) {
results.push(iterator.call(context, value, index));
});
return results;
}
它显然是在调用原型函数,但它不应该,但是插件代码被最小化,并且实际上是用python编译的,所以没有非最小化版本......
我开始使用js并不是很好,我很难为什么它会调用错误的函数...
P.S:我正在使用
更新:自己找到答案,见下文!
答案 0 :(得分:1)
我在'closure'lib中找到了解决方案,这是表过滤器的依赖项:
/**
* @define {boolean} NATIVE_ARRAY_PROTOTYPES indicates whether the code should
* rely on Array.prototype functions, if available.
*
* The Array.prototype functions can be defined by external libraries like
* Prototype and setting this flag to false forces closure to use its own
* goog.array implementation.
*
* If your javascript can be loaded by a third party site and you are wary about
* relying on the prototype functions, specify
* "--define goog.NATIVE_ARRAY_PROTOTYPES=false" to the JSCompiler.
*/
所以我下载了必要的东西(python,closure编译器......)并自己构建了Table Filter代码,并将此参数设置为false,并且它可以工作。
现在我有另一个问题,但我应该没事。如果没有,我会回到这里问问!
答案 1 :(得分:0)
尝试将插件包装在:
中;(function($) {
// This way you secure that $ in this local scope is referring to jQuery and not prototype.
// Original plugin goes here....
})(jQuery);