Javascript JQuery:on';我不能正常工作

Javascript JQuery:on';我不能正常工作,javascript,jquery,asp.net,jquery-ui,Javascript,Jquery,Asp.net,Jquery Ui,我有创建动态html按钮,我想为它们设置点击事件。以下是我的html输出和代码: <td style="width:90px;"> <input type="button" class="btn_Yeni" id="btnYeni"></td> 我点击按钮后什么也没发生。您有什么建议吗?因为您有动态按钮,所以需要使用事件委派 仅使用.on()注册事件处理程序并没有使用事件委派,它有一个非常特定的格式来使用事件委派。事件应该附加到页面中已经存在的元素(如

我有创建动态html按钮,我想为它们设置点击事件。以下是我的html输出和代码:

   <td style="width:90px;">
<input type="button" class="btn_Yeni" id="btnYeni"></td>

我点击按钮后什么也没发生。您有什么建议吗?

因为您有动态按钮,所以需要使用事件委派

仅使用.on()注册事件处理程序并没有使用事件委派,它有一个非常特定的格式来使用事件委派。事件应该附加到页面中已经存在的元素(如下面案例中的文档对象),然后必须将动态元素选择器作为第二个参数传递给
on()
方法


这是使用动态元素时的方法

$("body").on("click",".btn_Yeni", function () {
    alert('asd');
});
如何做到:

处理程序未附加到元素本身(因为注册时它不存在)——
因此,将处理程序附加到
主体
元素。并通过事件冒泡-当委托元素到达
主体(处理程序实际连接到的地方)时,会检查(对照)委托元素。

由于html按钮是动态添加的,因此需要使用来注册事件处理程序,如:

// New way (jQuery 1.7+) - .on(events, selector, handler)
$(document).on('click', '.btn_Yeni', function(event) {
     alert('asd'); 
});
更新

由于按钮被添加到表格单元格中,在HTML标记中可见,因此可以执行以下操作:

$('#tableID').on('click', '.btn_Yeni', function(event) {
     alert('asd'); 
});
这会将您的事件附加到
#tableID
元素中的任何按钮,
减少了必须检查整个
文档的范围
元素树并提高了效率。

我为您准备了一个小提琴,以探索动态按钮添加和使用on方法进行事件委派

var-button=$(“#btnCollection:last child”).html();
$(“#btnCollection”)。在(“单击”上,“.btn_Yeni”,函数(事件){
警报(“添加另一个按钮”);
$(“#btnCollection”).append(按钮);
});
演示


有关如何使用委托事件处理来解决问题的说明,请参见前面的答案。您需要以不同的方式使用
.on()
:,。最好将其附加到最接近的静态父级,而不是
正文
@ahren No。您无法知道是否有人/js/plugin操纵您所谓的“静态最近”。把它放在身体里是最好的方法。PS:LIVE用于在文档中执行此操作。(离正文很远)。将事件委托绑定到文档不是明智的选择。您应该绑定到将触发事件的元素附近。
// New way (jQuery 1.7+) - .on(events, selector, handler)
$(document).on('click', '.btn_Yeni', function(event) {
     alert('asd'); 
});
$('#tableID').on('click', '.btn_Yeni', function(event) {
     alert('asd'); 
});
$(document).on("click", ".btn_Yeni", function () {
    alert('asd');
});
function addrow(){
 var $tr = $("#baserow")   
 var $clone=$tr.clone();
 $tr.after($clone);    
}