我编写了一个jQuery插件,我想像这样调用自定义函数...
(function($) {
$.fn.testPlugin= function(options) {
var settings = {
func: null
};
if (options) {
$.extend(settings, options);
}
settings.func();
};
})(jQuery);
在这种情况下,我想运行doSomething
函数。
$(document).ready(function(){
$('div').testPlugin({
func: 'doSomething'
});
});
function doSomething() {
alert('hello');
}
我总是收到错误settings.func is not a function
所以我不得不使用:
eval(settings.func+"()");
Intead of:
settings.func();
哪个不理想!我有什么想法得到这个?
答案 0 :(得分:2)
因为您要将字符串分配给settings.func
,而不是函数。字符串永远不会起作用,即使它们包含函数的名称。
函数是一等公民,但是,这意味着您可以像使用任何其他变量一样使用它们,将它们分配给变量或将它们作为参数传递给其他函数。变化:
$('div').testPlugin({
func: 'doSomething'
});
到
$('div').testPlugin({
func: doSomething
});
它应该有用。