2

この機能が機能しない理由を誰か教えてもらえますか?

for(var i=1;i<=12;i++)
{
  var btn=$('<div>Button</div>').attr('id', 'id_'+i).button();
  btn.css('margin','10px').on('click', showId());
  btn.appendTo($('#buttons'));    
}

function showId(){
   alert($(this).attr('id'))
}
4

1 に答える 1

4

関数を実行するのではなく、関数を渡します。

btn.css('margin','10px').on('click', showId);

ところで、あなたもあなた$('#buttons')のをキャッシュし、イベント委任を使用する必要があります:

var buttons = $('#buttons').on('click', '.ui-button', showId);

for (var i=1; i <= 12; i++)
{
  $('<div>Button</div>')
      .attr('id', 'id_'+i)
      .button()
      .css('margin', '10px')
      .appendTo( buttons );    
}

function showId()
{
   alert( this.id );
}

さらに考慮すべき点がいくつかあります。

  • CSS をスタイルシートに移動する
  • すべてのボタンを一度に DOM に追加する
于 2012-06-22T03:17:22.717 に答える