需求是我根据点击元素的ID执行对应ID名称的函数初始化方法。我之所以用动态的原因是作为前端角色,我不知道每个ID是什么。(实际上我是知道了)
var oId;
$('#btn').click(function () {
oId = $('xxx').attr('id');
//具体实现不重要
// oId 的具体格式是 [id]-[时间戳]
var arr = oId.split('-');
eval(arr[0]+".init()");
});
是否有其他的方法来解决?(并不排斥 eval函数 )
补充:
以防一些朋友不明白。
就是一般我们调用函数方法如下: func.init();
调用 func 方法的 init(); 现在我需要 func 这个是动态的,变成xxx.init();
最终方案:
有助于关注问题的朋友知道。
var oId;
$('#btn').click(function () {
oId = $('xxx').attr('id');
//具体实现不重要
// oId 的具体格式是 [id]-[时间戳]
var arr = oId.split('-');
// 解决方法如下
var fn = window[arr[0]];
if( fn && fn.init ) {
fn.init();
}
});
假设你的方法是全局的
把所有可能的值都放到一个对象中。然后根据id中获得的前缀得到对于的对象,运行对象的init方法。举例:
像上面的例子这样,将所有oId的可能情况放到一个对象中管理,就可以实现你要的功能。这种写法有一个名字,叫做工程方法模式。有兴趣可以去网上了解下细节。
没get到你的点。。。怎么就需要函数名字动态了。。。
不知道jq trigger方法能不能实现你需求
你去看看 事件委托 就明白了
把要调用的方法集放进一个对象里
比如
调用
你需要的是eval
js支持函数式编程