我试图将所有jquery ui效果附加到图像上的点击事件:
http://jsfiddle.net/jfv7qyff/1/
var effectArray = [
'blind','bounce','clip',
'drop','explode','fade',
'fold','highlight',
'puff','pulsate',
'scale','shake',
'slide','transfer'
];
for(i=0;i<=effectArray.length-1;i++){
$('#effects img').eq(i).click(function(event){
console.log(effectArray);
console.log(i);
console.log(effectArray[i]);
// $(this).effect(effectArray[i]);
});
}
问题是,
console.log(effectArray);
console.log(i);
都返回正确的值(分别是数组和索引)但是:
console.log(effectArray[i]);
只返回undefined。这是为什么?
答案 0 :(得分:0)
我认为这里的问题是调用事件时,我是effectArray.length。要确保事件保留正确的索引,您需要使用JavaScript闭包:
for(i=0;i<=effectArray.length-1;i++) {
$('#effects img').eq(i).click((function() { var j = i; return function(event){
console.log(effectArray);
console.log(j);
console.log(effectArray[j]);
// $(this).effect(effectArray[j]);
});
})();
}
我还使用立即函数初始化闭包并返回函数处理程序。
希望这有帮助!
一个。