Javascript JQuery:on';我不能正常工作
我有创建动态html按钮,我想为它们设置点击事件。以下是我的html输出和代码: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()注册事件处理程序并没有使用事件委派,它有一个非常特定的格式来使用事件委派。事件应该附加到页面中已经存在的元素(如
<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);
}