更短的语法来绑定多个单击事件 - javascript

时间:2013-09-18 15:59:01

标签: javascript jquery onclick

是否有更短的语法来写这个

$('.class1').click(function() {
   some_function1();
});

$('.class2').click(function() {
   some_function2();
});

$('.class3').click(function() {
   some_function3();
});

$('.class4').click(function() {
   some_function4();
});

知道所有功能都不同!

3 个答案:

答案 0 :(得分:2)

由于函数似乎不接受任何特殊参数,因此将它们作为回调本身传递

$('.class1').click(some_function1);

答案 1 :(得分:1)

//param1: class name as string param2: function to execute
function binder(class, f){
  $("'."+class+"'").click(f);
}

然后用你的类调用该函数。

答案 2 :(得分:1)

这是一个概念证明。当然,你需要验证正则表达式返回等...但是需要考虑一下:假设类将以数字结尾,并且你有相应的函数等。

$('.class1, .class2').click(function() {
  var num = 'some_function' + this.className.match(/(\d+)$/)[0];
  test[num]();
});

var test = {
   some_function1:function(){
      console.log('in func 1 ');
   },
   some_function2:function(){
      console.log('in func 2 ');
   }

}