我想动态设置一些jQuery动画。
代码:
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]
在当前范围内不可用。有人能告诉我如何设置这些回调吗?
答案 0 :(得分:4)
在这里,您使用closure
Immediately-invoked function expression。您必须将data[index]
作为参数传递。
(function(dindex){
var props = {};
props[dindex.property] = dindex.value;
dindex.elem.animate(
props,
500,
function() {
dindex.callback();
}
);
})(data[index]);
答案 1 :(得分:2)
您可以尝试这样做,
function anim(data) {
$.each(data, function(x,y){
var props = {};
props[y.property] =y.value;
y.elem.animate(
props,
500,
function() {
y.callback();
}
);
});
}