我只需要逻辑和理解我如何做到这一点。
问题:
我有几个非常相似的功能,但我想创建/调用动态
示例:
$(document).ready(function() {
function foo() {
$("#foo_elem").toggle(true).attr('required', true);
alert('This is foo');
}
function bar() {
$("#bar_elem").toggle(true).attr('required', true);
alert('This is bar');
}
});
如何传入foo / bar来创建函数?伪代码
$(document).ready(function() {
// would pass foo/bar to this?
$($x)(function() {
$("#"+$(this)+"_elem").toggle(true).attr('required', true);
alert('This is '+$(this));
});
});
答案 0 :(得分:9)
你想动态调用foo或bar吗?
function callMethod(method)
{
method();
}
callMethod(foo); // foo is the symbol for your method
callMethod(bar); // etc
处于较高水平。但是,在您的实例中,您要求将该符号用作选择器中的变量:
function callMethod(elementPrefix)
{
$('#' + elementPrefix+ '_elem').toggle(true).attr('required', true);
alert('This is ' + elementPrefix);
}
如果要将其用作字符串值和方法名称,则可以使用符号来获取方法:
var methodName = 'foo';
var text = 'This is ' + methodName; // This is foo
var method = eval('(' + methodName + ')');
method(); // calls foo()
答案 1 :(得分:4)
我不确定我是否完全理解你的问题,但是你想根据一些参数动态创建一个函数吗?如果是这样,你可以这样做:
function make_func(x) {
return function() {
$("#"+x+"_elem").toggle(true).attr('required', true);
alert('This is '+x);
};
}
然后make_func('foo')
将返回一个函数,该函数等同于原始示例中的函数foo
。