最小化jquery代码

时间:2012-08-22 10:53:43

标签: jquery

我目前有这个jquery代码

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

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

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

问题是,对于我想要做的事情,我需要多次写出来,所以想知道如何缩短它

6 个答案:

答案 0 :(得分:5)

使用multiple selector或给这些元素一个公共类(如果你有更多的元素,那就更好):

$('#f1, #f2, #f3').click(function() { // $('.foo').click(...)
    $('#bg').addClass(this.id);
});

答案 1 :(得分:1)

为他们提供一个选择器类,然后

$('.foo').click(function() {
  $('#bg').addClass(this.id);
});

答案 2 :(得分:1)

为所有人添加一个类,然后执行:

 $('.class').click(function() {
      $('#bg').addClass($(this).attr('id'));
 });

答案 3 :(得分:0)

我们可以这样做。

 for(var i=1; i<=3;i++)
 {
    $('#f' + i).click(function() {
       $('#bg').addClass('f' + i);
    });
 }

答案 4 :(得分:0)

有多种方式,如果你有很多#fx divs,那么这是另一种方式:

var prefix = "f";

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

或者,如果所有元素都在一个“容器”元素中:

$("#fContainer").children().click(function() {
    $('#bg').addClass(this.id);
});

答案 5 :(得分:0)

假设您不想使用某个课程(正如其他人所说的那样)将您的功能与您的点击作业分开。

var clickHandler = function(){ 
   $('#bg').addClass(this.id); 
};
$('#f1, #f2, #f3').click(clickHandler);