为什么我从jquery生成的按钮没有事件?

时间:2014-08-29 08:39:42

标签: jquery

为什么我从jquery生成的按钮没有事件?

<input type='button' value='Populate' id='pop'/>
<input type='button' value='Click' id='btn'/>
$('#pop').on('click', function(){
   var clone = $('input[id*=btn]').clone();
   $(this).after(clone);
});

$('#btn').on('click', function(){
   alert('clicked'); 
});

fiddle

4 个答案:

答案 0 :(得分:2)

ID应该是唯一的。因此,将您的ID btn更改为了课程。使用event-delegation。试试这个:

$(document).on('click','.btn', function(){
   alert('clicked'); 
});

<强> DEMO

答案 1 :(得分:0)

你正在复制id的错误只是重复的类。

<input type='button' value='Populate' id='pop'/>
<input type='button' value='Click' id='btn' class="btn"/>


$(document).on('click','.btn',function(){
  alert('clicked'); 
});

试试这个(根据你的问题):

$(document).on('click','#btn',function(){
  alert('clicked'); 
});

编辑:

小提琴链接: - http://jsfiddle.net/nLkvejss/

答案 2 :(得分:0)

试试这个:

$(document).on('click', "#btn", function(){
   alert('clicked'); 
});

答案 3 :(得分:0)

在应用事件侦听器之后,您正在创建克隆按钮。克隆()元素 ONLY 克隆DOM结构时,事件不是。

用户Event Delegation或只是将true传递给clone()函数,让它也克隆事件(根据the spec

$('#pop').on('click', function(){
   var clone = $('input[id*=btn]').clone(true); // < pass true here
   $(this).after(clone);
});

DEMO:http://jsfiddle.net/rvhhv8sf/3/

P.S。 Id必须是唯一的;)