我正在制作自己的jQuery插件(我还在学习!)。插件在点击某个元素后需要返回值。
它看起来像这样:
$.fn.testPlugin = function(options) {
var defaultOptions = {
values: {
value1: "",
value2: ""
},
onDivNameClick: function() {}
};
options = $.extend(true, defaultOptions, options);
//Do some initializing here
divName.click(function () {
//Do some other plugin stuff on click here
// onClick User Function
if ($.isFunction(options.onDivNameClick)) {
options.onDivNameClick.call(options.values);
}
})
//Other code here.
return this;
}
我初始化插件并传递我想要执行的命令,但插件不会通过values
返回我需要的值,而是'undefined'
。
调试显示options.values
插件中有数据,所以我不完全确定这是正确的方法。
$("#elName").testPlugin({
onDivNameClick: function (values) { //values returns 'undefined'
model.value1 = values.value1;
model.value2 = values.value2;
},
option1: "",
//other options
});
onDivNameClick
应该将options.values
传递给选项中的函数,但目前不会。我做错了什么?
答案 0 :(得分:0)
javascript prototype.call()
方法需要另外一个引用this
的参数。
if ($.isFunction(options.onDivNameClick)) {
options.onDivNameClick.call(this, options.values);
}
因此 - 没有通过函数传递实际值。