重新加载后 DIV 中的事件不起作用

Mil*_*cay 0 jquery

当用户单击时,我有下面的代码对表列“创建日期”进行排序。
请注意,“ IntNote_CreatedDate”是表 TH 标签的 ID。

    var f_CreatedDate = 1;
    $("#IntNote_CreatedDate").on("click", function()
    {
        //alert("Hey");
        f_CreatedDate *= -1;
        var n = $(this).prevAll().length;
        sortTable("#tblIntNotes", f_CreatedDate, n); // call the sortTable function.... working fine
    });
Run Code Online (Sandbox Code Playgroud)

这工作正常。现在我有一个弹出窗口,可以使用下面的代码添加注释,它添加注释,然后刷新注释的父 DIV 容器。这也很好用。

$(document).ready(function() {
    updateParentDIV = function() {
        var url = opener.location.href + " #refreshNotes"
        //alert("url: " + url)

        // This method works for both IE and FireFox
        window.opener.$("div#divNotes").load(
            url, function(){
            window.close();
        });
    };
});
Run Code Online (Sandbox Code Playgroud)

问题是刷新父 DIV 后,事件“ $("#IntNote_CreatedDate").on("click", function()”不再识别或不再起作用。不知何故,它不再执行,没有错误。

请告知如何刷新父窗口 DIV 并仍然保留事件“ $("#IntNote_CreatedDate").on("click", function()”的工作原理。

Roz*_*wel 5

您需要使用 .on() 的委托版本并将其附加到您的 div 的父级。沿着这条线的东西应该是接近的:(未测试)

$(document).on("click", "#IntNote_CreatedDate", function(){.....});
Run Code Online (Sandbox Code Playgroud)

基本上,您当前的版本附加到页面加载时存在的 dom 对象。当您的 div 被重写时,它会丢失事件。通过为您的元素附加一个带有选择器的父级,您是说要为我的任何与该选择器匹配的子级现在或将来运行此事件。

阅读文档的“直接和委托事件”部分:http : //api.jquery.com/on/