正确的语法定义事件委托(Correct syntax for defining an event d

2019-10-29 07:38发布

通常情况下,你写一个点击按钮这样的处理程序:

$(document).ready(function()
{

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

但在的情况下, 事件委托 ,以应对与诸如这样的功能的事件:

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

我感到困惑的是定义调用此函数委托该事件的正确语法-这一点? (一种):

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

或这个? (B):

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

这是正确的,为什么?

Answer 1:

在选择一个你只是重复的document.ready语法的两倍。

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

所有你需要做的是选项B



Answer 2:

而选项B肯定会做到这一点,如果你需要,你需要调用从除按钮点击之外的其他地方的功能使用单独的功能,即在案件的路上,我的偏好通常是把代码行。 唯一的其他时间我不这样做时它会提高可读性。

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


文章来源: Correct syntax for defining an event delegator