为什么我从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');
});
答案 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必须是唯一的;)