0

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

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

或这个?(乙):

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

哪个是正确的,为什么?

4

2 回答 2

5

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

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

你需要做的就是选择B

于 2009-07-18T15:53:06.463 回答
1

如果您需要使用单独的函数,那么选择 B 肯定是执行此操作的方法,即,如果您需要从按钮单击以外的其他位置调用该函数,我的偏好通常是将代码放在一行中. 我唯一不这样做的时候是它会提高可读性。

$(function() {
    $("button").click( function(e) {
        if (e.target.id == 'button1') {
           alert('button1 clicked');
        }
        ...
    });
});
于 2009-07-18T15:58:41.163 回答