分离的selector-event-(s)VS多个if语句

时间:2015-12-07 14:42:10

标签: javascript jquery

我有多个<button>,每个人.on('click')都有自己的职责。现在我想知道,哪种算法更标准更好|更快|优化

算法1:

$("#btn1").click(function(e) { // do stuff for btn1 });
$("#btn2").click(function(e) { // do stuff for btn2 });
$("#btn3").click(function(e) { // do stuff for btn3 });

算法2

$("button").click(function(e) {

    var id = $(this).attr('id');

    if     (id == '#btn1') { // do stuff for btn1 }
    elseif (id == '#btn2') { // do stuff for btn2 }
    elseif (id == '#btn2') { // do stuff for btn3 }

});

2 个答案:

答案 0 :(得分:1)

纯粹是偏好和个人风格的问题,视情况而定。我更喜欢将工作划分为函数,但如果我确实使用了第二个例子,我就这样做:

$("button").click(function(e) {
    switch (this.id) {
    case 'btn1': // do stuff for btn1 
      break
    case 'btn2': // do stuff for btn2 
      break
    case 'btn3': // do stuff for btn3 
      break
    default: console.log(this.id, "has no behavior");
    }
});

答案 1 :(得分:1)

通过ID查询DOM比标记名称快得多,因此第一个选项应该更快。 如果速度很重要,你可以考虑启动jQuery并在vanilla js中做同样的事情。

但在任何一种情况下,对于任何实际使用情况,性能差异都可以忽略不计。