对于动态添加的表行,不会触发Click事件
我有一个空表,我通过jQuery添加行使用:
$('#table > tbody:last').append('' + symbol.Code1 + ' ' + symbol.Code2+ ' ' + symbol.Code3+ ' ');
一切都好,但是当我实施时:
$("#table tr").click(function(e) { alert(this.id); });
什么都没发生。
您需要使用事件委派来绑定click事件以动态添加元素。 使用click绑定的方式将应用于现有元素,但不适用于稍后添加的元素。
$(document).on("click", "#table tr", function(e) { alert(this.id); });
您可以通过id或父类提供最近的父选择器来限制on
的范围。
$('.ParentElementClass').on("click", "#table tr", function(e) { alert(this.id); });
委托活动
委托事件的优点是,它们可以处理来自稍后添加到文档的后代元素的事件。 通过选择在附加委托事件处理程序时保证存在的元素,您可以使用委派事件来避免频繁附加和删除事件处理程序。
你必须使用.on
方法
$("#table").on('click','tr',function(e) { alert($(this).attr('id')); });
将事件绑定到现有事件后,可以动态添加行。 您可以使用委派事件方法来解决问题:
$("#table").on("click", "tr", function(e) { alert(this.id); });
$(document).on('click', "#tbl-body tr td", function(e) { alert(this.id); });