Javascript 如何使用动态名称调用jQuery函数?
我真不敢相信我一直无法找到解决这个问题的办法。在我看来,这是一个非常“常规”的问题,它的解决方案会在网络上乱扔垃圾 我从数据库查询中返回了以下数组:Javascript 如何使用动态名称调用jQuery函数?,javascript,jquery,dynamic,Javascript,Jquery,Dynamic,我真不敢相信我一直无法找到解决这个问题的办法。在我看来,这是一个非常“常规”的问题,它的解决方案会在网络上乱扔垃圾 我从数据库查询中返回了以下数组: var ids = ['12', '15', '40']; var actions = ['hide', 'show', 'fadeIn']; 我想循环遍历数组并对DOM执行适当的操作,如下所示: for(var i=0; i < ids.length; i++){ $('#row_'+ids[i]).actions[i](); }
var ids = ['12', '15', '40'];
var actions = ['hide', 'show', 'fadeIn'];
我想循环遍历数组并对DOM执行适当的操作,如下所示:
for(var i=0; i < ids.length; i++){
$('#row_'+ids[i]).actions[i]();
}
无济于事。我相信eval()
应该可以工作,而且(在绝望中)甚至尝试过,但无法获得正确的字符串使其工作
在堆栈溢出的其他地方,我遇到了使用窗口解决的类似问题,如:
var fn = 'hideSomething';
window.fn();//where hideSomething was a defined function.
但是这个是在jQuery
上定义的,而不是在窗口上定义的
我们到了 您需要使用[varhere]
通过变量名访问属性/方法。由于您的属性名称位于actions[i]
中,因此您可以执行以下操作:
$('#row_'+ids[i])[actions[i]]();
或者,在一个稍微容易一点的计划中,完全按照正在发生的事情:
var method = actions[i];
$('#row_'+ids[i])[method]();
当提前知道属性名称时,可以使用点语法obj.prop
。当它位于变量中且事先未知时,可以使用obj[prop]
语法。因为方法只是一个属性,所以jQuery方法也是如此
for(var i=0; i < ids.length; i++){
$('#row_'+ids[i])[actions[i]]();
}
for(变量i=0;i
使用方括号表示法访问属性:
for (var i = 0; i < ids.length; i++) {
$('#row_' + ids[i])[actions[i]]();
}
for(变量i=0;i
请参阅:dupe:@adeneo:我在您链接的页面上没有看到太多关于jQuery的讨论。访问对象属性是一样的,jQuery与否。是的,我想是这样。有时候,婴儿需要用勺子喂食,你知道。哈巴!为什么另一个人删除了他的答案?遗憾,因为简洁是很多人(包括我在内)都会觉得很有吸引力的东西。谢谢你快速而有用的回复。谢谢你取消删除;)感谢您的快速、帮助和详细的回复。我猜“精心制作”一定会赢得你的认可!
for (var i = 0; i < ids.length; i++) {
$('#row_' + ids[i])[actions[i]]();
}