Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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 定义事件委托器的正确语法_Javascript_Jquery_Event Delegation - Fatal编程技术网

Javascript 定义事件委托器的正确语法

Javascript 定义事件委托器的正确语法,javascript,jquery,event-delegation,Javascript,Jquery,Event Delegation,通常,您为按钮单击编写处理程序,如下所示: $(document).ready(function() { $("button").click(function() { doSomething(); }); }); 但是,对于事件,要使用以下功能响应事件: function doSomething(event) { if (ev.target.id == 'button1' ) { //do your stuff

通常,您为按钮单击编写处理程序,如下所示:

$(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');
    }
  }
我所困惑的是定义调用此delegator函数的事件的正确语法-这是什么?(A) :

$(document).ready(function()
{
  $(function()
  {
    $('button').click(doSomething);
  });
});
$(document).ready(function()
{
  $("button").click(doSomething);
});
还是这个?(B) :

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

哪个是正确的,为什么?

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

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

您只需在选项A中选择B,您只需重复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');
        }
        ...
    });
});

如果您需要使用一个单独的函数,那么选择B当然是实现这一点的方法,例如,如果您需要从按钮单击以外的其他地方调用函数,我的首选方法通常是将代码排成一行。我唯一没有这样做的时候是当它可以提高可读性的时候

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