本文介绍了循环将动态参数传递给回调函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想动态设置一些jQuery动画.
I wanted to set some jQuery animatios dynamically.
代码:
function anim(data) { for (index in data) { (function(){ var props = {}; props[data[index].property] = data[index].value; data[index].elem.animate( props, 500, function() { data[index].callback(); } ); })(); } } var data =[ { elem: elem1, property: 'prop1', value: 'val1', callback: function() { console.log('callback1'); } }, { elem: elem2, property: 'prop2', value: 'val2', callback: function() { console.log('callback2'); } }, ]; anim(data);问题在于绑定回调.触发回调后,data[index]在当前作用域中不可用.有人可以告诉我如何设置这些回调属性吗?
The problem is binding callbacks. When the callback is fired, data[index] is not available in current scope. Can somebody tell me how to set those callback propery?
推荐答案在这里,您使用的closure为立即调用的函数表达式.您必须传递data[index]作为参数.
Here you used a closure of Immediately-invoked function expression. You have to pass data[index] as parameter.
(function(dindex){ var props = {}; props[dindex.property] = dindex.value; dindex.elem.animate( props, 500, function() { dindex.callback(); } ); })(data[index]);更多推荐
循环将动态参数传递给回调函数
发布评论