我有一堆带有id的元素,如“check1”,“check2”,“check3”等。我想循环遍历它们并隐藏它们并设置onclick功能。这是我目前的代码:
for (i = 0; i < badgeArray.length; i++) {
jQuery("a#check"+ i + "").click(function(){
jQuery("#check" + i + "info").toggle();
jQuery("a#check"+ i + "").toggleClass("extrasopen");
jQuery("a#check"+ i + "").toggleClass("extrasclosed");
});
jQuery("#check" + i + "info").hide();
}
隐藏所有“#check”+ i +“info”元素,但隐藏/显示功能不起作用。当我尝试这样的一个元素时:
jQuery("a#check1").click(function(){
jQuery("#check1info").toggle();
jQuery("a#check1").toggleClass("extrasopen");
jQuery("a#check1").toggleClass("extrasclosed");
});
有效。
有什么想法吗?
答案 0 :(得分:2)
你需要使用一个闭包:
for (var i = 0; i < badgeArray.length; i++) {
(function(i) {
jQuery("a#check"+ i).click(function(){
jQuery("#check" + i + "info").toggle();
jQuery("a#check"+ i).toggleClass("extrasopen").toggleClass("extrasclosed");
});
jQuery("#check" + i + "info").hide();
})(i);
}
但您也可以使用contextual元素及其属性:
for (var i = 0; i < badgeArray.length; i++) {
jQuery("a#check"+ i).click(function(){
jQuery("#" + this.id + "info").toggle();
jQuery(this).toggleClass("extrasopen").toggleClass("extrasclosed");
});
jQuery("#check" + i + "info").hide();
}