jquery函数不能用作事件处理程序

时间:2012-06-22 03:16:18

标签: jquery

有谁能告诉我为什么这个功能不起作用?

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

1 个答案:

答案 0 :(得分: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