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');
    }
  }

私が混乱しているのは、この委任関数を呼び出すイベントを定義するための正しい構文です-これ?(A):

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

またはこれ?(B):

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

どちらが正しいのか、そしてその理由は?

4

2 に答える 2

5

選択肢Aでは、document.ready構文を2回繰り返しています。

// 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 に答える