0

私は現在、このjqueryコードを持っています

$('#f1').click(function() {
$('#bg').addClass('f1');
});

$('#f2').click(function() {
$('#bg').addClass('f2');
});

$('#f3').click(function() {
$('#bg').addClass('f3');
});

問題は、私がやりたいことのためにこれを何度も書き出す必要があるということです。これをどのように短縮できるか疑問に思っていました

4

6 に答える 6

5

複数のセレクターを使用するか、これらの要素に共通のクラスを指定します (さらに多くの要素がある場合はより適切です)。

$('#f1, #f2, #f3').click(function() { // $('.foo').click(...)
    $('#bg').addClass(this.id);
});
于 2012-08-22T10:55:10.757 に答える
1

それらにセレクターのクラスを与え、次に

$('.foo').click(function() {
  $('#bg').addClass(this.id);
});
于 2012-08-22T10:55:49.537 に答える
1

それらすべてにクラスを追加してから、次のようにします。

 $('.class').click(function() {
      $('#bg').addClass($(this).attr('id'));
 });
于 2012-08-22T11:00:13.687 に答える
0

このようにできますか。

 for(var i=1; i<=3;i++)
 {
    $('#f' + i).click(function() {
       $('#bg').addClass('f' + i);
    });
 }
于 2012-08-22T10:55:49.083 に答える
0

複数の方法があります。これらの#fxdivが多数ある場合は、別の方法があります。

var prefix = "f";

$("[id^="+prefix+"]").click(function() {
    $('#bg').addClass(this.id);
});

または、すべての要素が1つの「コンテナ」要素内にある場合:

$("#fContainer").children().click(function() {
    $('#bg').addClass(this.id);
});
于 2012-08-22T10:57:51.037 に答える
0

クラスを使用したくないと仮定すると(他の人が言ったように)、機能をクリック割り当てから分離します。

var clickHandler = function(){ 
   $('#bg').addClass(this.id); 
};
$('#f1, #f2, #f3').click(clickHandler);
于 2012-08-22T12:24:18.693 に答える