你有一个控制阵列的功能,它工作正常。
这是我的功能:
var arrayLength = outFitLinks.length-1;
var depthCount = 0;
for(i=1;i<=arrayLength;i++){
$('.cloneFrame').clone().removeClass('cloneFrame').each(function(){
i % 2 == 1 ? $(this).attr('id','id'+i).appendTo('.front') : $(this).attr('id','id'+i).appendTo('.back');
$(this).find('.product-frame').each(function(index){
depthCount += 1;
$(this).find('img').attr('src', 'imgs/outfits/'+depthCount+'.jpg');
$(this).find('a').each(function(){
console.log(outFitLinks[i][index]);
})
$(this).parent().hide();
})
})
}
$('.cloneFrame').remove();
在相同的功能我改为控制台绑定到点击事件,它不工作..有什么不对吗?
这是功能不起作用:
var arrayLength = outFitLinks.length-1;
var depthCount = 0;
for(i=1;i<=arrayLength;i++){
$('.cloneFrame').clone().removeClass('cloneFrame').each(function(){
i % 2 == 1 ? $(this).attr('id','id'+i).appendTo('.front') : $(this).attr('id','id'+i).appendTo('.back');
$(this).find('.product-frame').each(function(index){
depthCount += 1;
$(this).find('img').attr('src', 'imgs/outfits/'+depthCount+'.jpg');
$(this).find('a').bind('click', function(){
console.log(outFitLinks[i][index]); // not working
})
$(this).parent().hide();
})
})
}
$('.cloneFrame').remove();
答案 0 :(得分:3)
它不起作用,因为事件处理程序稍后运行,此时变量i
(可能outFitLinks
)与绑定事件时的值不同。
创建一个闭包,以便您可以在以后的局部变量中保留每个值:
(function() {
var links = outFitLinks[i][index];
$(this).find('a').bind('click', function(){
console.log(links);
});
})();
考虑到这一点,在这种情况下你已经有了一个闭包,因为你正在使用.each
作为循环,所以它应该足够了:
var links = outFitLinks[i][index];
$(this).find('a').bind('click', function(){
console.log(links);
});
答案 1 :(得分:-1)
您是否尝试过使用.click(...)
代替bind("click", ...)
?
我有一些奇怪的事情发生在一个而不是另一个,我想是尝试改变它我想:)