var arr=['#penuse1','#penuse2','#penuse3'];
var att=['#art1','#art2','#art3'];
for(i=0;i<arr.length;i++){
$("arr[i]").bind('click',function(){
$("att[i]").show().siblings().hide();
});
// alert(arr[i]);
};
// $("#penuse1").click(function () {
// $("#art1").show().siblings().hide();
// });
// $("#penuse2").click(function () {
// $("#art2").show().siblings().hide();
// });
// $("#penuse3").click(function () {
// $("#art3").show().siblings().hide();
// });
想把注释部分的点击事件做成数组循环来实现 ,但是点击没反应,求大腿告诉下怎么改
$("arr[i]") 改为 $(arr[i])。
这里所有的 click 回调最终执行的都是
而不是对应的 1, 2, 3 ,你可以在这里打印一下 i 你就知道了,按照你代码,这里应该就是打印的是 3 ,所以你哪个点击,最终都是调用
$(att[3])
这样的,这也就是闭包产生的影响。这里可以这么修改,把所有的 #penuse1 元素改为:
这里的 data-idx 就对应你原本 id 中的序号。
然后监听事件改为
就可以避免闭包的影响了。