Jquery选择问题

时间:2010-01-17 17:54:53

标签: jquery function onclick

我有一堆带有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");
}); 

有效。

有什么想法吗?

1 个答案:

答案 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();
}