Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用动态名称调用jQuery函数?_Javascript_Jquery_Dynamic - Fatal编程技术网

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]]();
}