定义事件委托

问题描述:

通常正确的语法,你写一个按钮的处理程序点击这样的:定义事件委托

$(document).ready(function() 
{ 

    $("button").click(function() 
    {  
    doSomething(); 
    }); 
}); 

但在event delegator的情况下,对具有功能的事件,如对此作出回应:

function doSomething(event) 
    { 
    if (ev.target.id == 'button1') 
    { 
     //do your stuff 
     console.log('#button1 click'); 
    } 
    else 
    { 
     console.log('not a #button1 click'); 
    } 
    } 

我很困惑的是定义调用这个委托函数的事件的正确语法 - 这是什么? (A):

$(document).ready(function() 
{ 
    $(function() 
    { 
    $('button').click(doSomething); 
    }); 
}); 

或那样吗? (B):

$(document).ready(function() 
{ 
    $("button").click(doSomething); 
}); 

哪个是正确的,为什么呢?

在选项A中,您只是重复了两次document.ready语法。

// These two lines are equal 
$(document).ready(fn); 
$(fn); 

所有你需要做的是选项B

而选项B肯定会做到这一点的方式,如果你需要使用一个单独的函数,即在情况下,你需要调用函数从一个按钮点击以外的地方,我的首选通常是把代码放在一行。我不这样做的唯一时间是它会提高可读性。

$(function() { 
    $("button").click(function(e) { 
     if (e.target.id == 'button1') { 
      alert('button1 clicked'); 
     } 
     ... 
    }); 
});