我得到一个被点击的li的ID:
$("#repository-tabs li").on("click", function(e) {
alert(this.id);
});
容易,问题是,此后我会动态添加li元素:
$("#add-tab").click(function() {
tabs = $("#repository-tabs li").length - 1;
append_at = tabs - 2;
$("#repository-tabs li:eq(" + append_at + ")").after('<li id="repository-tab-' + tabs + '" class="tab col s3 z-depth-5"><a class="white green-text text-darken-2 waves-effect waves-light" href="javascript:void(0);">Repositório ' + tabs + '</a></li>');
});
现在,当我单击添加的li元素时,不会触发任何事件。那么,如何获取点击了 future 的商品的ID?
答案 0 :(得分:1)
不要将事件直接应用于tab元素;而是将其应用于父级并委派它。
on()
具有第二个可选参数selector
,用于过滤触发事件的选定元素的后代。
$("#repository-tabs").on("click", "li", function() {
alert(this.id);
});
来自docs:
委派的事件处理程序的优点是,它们可以处理来自后代元素的事件,这些事件以后会添加到文档中。通过选择保证在附加委托事件处理程序时会出现的元素,您可以使用委托事件来避免频繁附加和删除事件处理程序的需求