潜入JS原型我试图将参数传递给已经存在的函数。这就是结果。
chardinJs.prototype.start = function (txtTag) {
this.infoTag = txtTag;
var el, _i, _len, _ref;
if (this._overlay_visible()) {
return false;
}
this._add_overlay_layer();
_ref = this.$el.find('*[' + infoTag + ']:visible');
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
el = _ref[_i];
this._show_element(el);
}
return this.$el.trigger('chardinJs:start');
};
最初没有&#39; txtTag&#39;作为一个参数,功能工作正常,但一旦我添加它,我收到一个错误&#34; $(...)。chardinJs.start不是一个函数&#34;。是什么给了什么?
PS:我正在尝试使用这样的功能:
$('form').chardinJs.start('data-info');
在修改之前,我正在使用这样的功能:
$('form').chardinJs('start');
答案 0 :(得分:1)
您在原型上添加了start
作为函数,但是您尝试从构造函数访问它,而不是从实例访问它。要通过原型调用它,您必须使用new
关键字来创建实例:
(new ($('form').chardinJs())).start('data-info');
我不确定这是否会奏效。要按照您希望的方式调用它,您必须使start
成为chardinJs
的属性:
chardinJs.start = function (txtTag) {
...
但是,那也没有用,因为你失去了你的背景。
真的,为了完成你想要做的事情,你必须在调用chardinJs
时将这些函数添加到jQuery对象中:
$.fn.chardinJs = function () {
// your existing implementation
this.start = chardinJsStart; // reference your start function
return this;
};
然后你可以这样做:
$('form').chardinJs().start('data-info');
另一个选择是保持它的工作方式,但是在方法名称之后传递方法参数:
$('form').chardinJs('start', 'data-info');