0

例子是这个,这不起作用。我的错误是什么?

var i=1;
for(i; i <=165; i++){
    jQuery(".tekAlan"+i).click(function() {   
    jQuery(".tekAlan"+i).addClass("tekAlanSecildi");    
    });
}

谢谢。

4

3 回答 3

6

您是通过i引用而不是值传递,所以i不是指您认为循环运行后的数字。看看这个简单的例子,看看我的意思。

在这种情况下,您可能只使用属性选择器和this

jQuery('[class^="tekAlan"]').click(function() {   
    jQuery(this).addClass("tekAlanSecildi");    
});

如果要修复当前代码,则必须使用匿名函数进行遮蔽: i

for(var i = 1; i <= 165; i++){
    (function(i) {
        jQuery(".tekAlan" + i).click(function() {   
            jQuery(".tekAlan" + i).addClass("tekAlanSecildi");    
        });
    })(i);
}
于 2013-01-13T01:32:18.487 回答
0

Although this is not very clear, you could try something like this

1) add a class to all of your elements

2)

$('.someclass').click(function(){

    $(this).addClass('someotherclass');

})

you dont need a for loop.

于 2013-01-13T01:42:33.413 回答
0

我猜您只想将类添加到单击的项目中。但是,它总是将类添加到最后一个。那是因为 i 是在 for 结束访问的,所以它总是包含 165。这样做可以解决您的问题:

var i=1;
for(i; i <=165; i++){
    jQuery(".tekAlan"+i).click(function() {   
        jQuery(this).addClass("tekAlanSecildi");    
    });
}

jQuery(this)是受事件影响的元素的引用(在本例中为click

于 2013-01-13T01:33:00.880 回答