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

クリックしたアイテムだけにクラスを追加したいと思います。ただし、常に最後のクラスにクラスを追加します。これは、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 に答える
0

これはあまり明確ではありませんが、次のようなことを試すことができます

1)すべての要素にクラスを追加します

2)

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

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

})

forループは必要ありません。

于 2013-01-13T01:42:33.413 に答える