如何获取在创建文档后添加的clicked元素的ID?

时间:2018-11-07 18:11:00

标签: javascript jquery dom

我得到一个被点击的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?

1 个答案:

答案 0 :(得分:1)

不要将事件直接应用于tab元素;而是将其应用于父级并委派它。

on()具有第二个可选参数selector,用于过滤触发事件的选定元素的后代。

$("#repository-tabs").on("click", "li", function() {
  alert(this.id);
});

来自docs

  

委派的事件处理程序的优点是,它们可以处理来自后代元素的事件,这些事件以后会添加到文档中。通过选择保证在附加委托事件处理程序时会出现的元素,您可以使用委托事件来避免频繁附加和删除事件处理程序的需求