Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 分离的选择器事件-(s)与多个if语句_Javascript_Jquery - Fatal编程技术网

Javascript 分离的选择器事件-(s)与多个if语句

Javascript 分离的选择器事件-(s)与多个if语句,javascript,jquery,Javascript,Jquery,我有多个,每个.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 }); $("button").click(functio

我有多个
,每个
.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 });
$("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:

$("#btn1").click(function(e) { // do stuff for btn1 });
$("#btn2").click(function(e) { // do stuff for btn2 });
$("#btn3").click(function(e) { // do stuff for btn3 });
$("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 }

});

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

$("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");
    }
});

按ID查询DOM比按标记名查询快得多,因此第一个选项应该更快。 如果速度很重要,你可以考虑启动jQuery并在香草JS中执行同样的操作。
但在任何一种情况下,对于任何实际使用,性能差异都可以忽略不计。

如果存在任何性能差异,则可以忽略不计。这是个人偏好和代码组织的问题。我更喜欢绑定事件而不是特定按钮(按ID)。所以我可以清楚地看到哪个按钮做什么。如果有多个按钮的重复代码,我将创建一个函数。@VictorEvin您是对的。我看到了一个可能的副本。谢谢你的解释+1.有一件事,为什么你的答案是社区维基?那是什么?你是版主吗?@stack:不,我这么做只是为了让任何人都能自由地做出改进。我真的不在乎代表分数。如果性能确实是一个问题,jQuery将是第一个被淘汰(至少部分被淘汰)+1.