我正在开发一个jQuery插件,我希望用户在标志(在代码中)设置为true后传入一个方法名称来执行。我已经根据需要使用了标志,我只需要一种方法来执行传递的方法。 例如:
(function(jQuery){
$.fn.extend({
pluginName: function(options) {
var defaults = {
parameter1: 0,
method: function(){}
}
var options = $.extend(defaults, options);
return this.each(function() {
var opt = options;
var flag = false;
if(opt.parameter1 > 0){
flag = true;
}
if(flag){
//call users method
}
jQuery(this).hide();
});//END return
}//END counter method
});//END extend
})//END function
//Return jQuery object
(jQuery);
用户会这样称呼它:
$("#divName").pluginName({
parameter1: 1,
method: function(){alert("test");}
});
我还没有测试过上面的代码,它只是一个插图,所以你可以看到我想要完成的任务。 提前谢谢!
答案 0 :(得分:4)
由于函数是JavaScript中的第一类对象,因此您只需使用
即可options.method();
在你的插件中执行函数
答案 1 :(得分:1)
用户提供的方法(例如您的示例)与任何其他方法之间没有区别。因此,您可以像调用任何其他方法一样调用它。
例如:
if (flag)
opt.method();
如果方法接受参数,则可以按照将参数传递给普通方法的方式传递它们。
答案 2 :(得分:1)
这个评论与你的问题没有关系,但我认为值得注意的是帮助你更多地了解jQuery和JS。
您的代码目前为:
(function(jQuery) {
$.fn.extend({
/* ... */
});
})(jQuery);
以这种方式使用jQuery时创建匿名函数的原因之一是,您可以引用$
对象而不会与其他Javascript库冲突。但是,您在匿名函数中接受名为jQuery
的参数,然后继续拨打$.fn.extend
而不是jQuery.fn.extend
。
如果您计划在代码中将jQuery对象引用为$
,我建议您在匿名函数中将参数名称更正为$
,即:
(function($) {
$.fn.extend({
/* ... */
});
})(jQuery);