如何在向DOM添加新元素后重新加载函数

izo*_*ate 2 javascript jquery dom

我正在为我的应用中的个人资料开发+关注功能.跟随功能只工作一次(在新页面加载时),但在脚本替换DOM元素后,它不起作用.

用户遵循配置文件时的HTML输出:

<div id="follow">
    <a>Follow profile</a>
</div>
Run Code Online (Sandbox Code Playgroud)

HTML输出当用户当前跟随配置文件时:

<div id="unfollow">
    <a>Unfollow profile</a>
</div>
Run Code Online (Sandbox Code Playgroud)

魔术发生在jQuery中.以下函数包含在$(document).ready()函数中:

function follow() {

    $("#follow a").on("click", function() {
        // $.getJSON fn here that follows profile and returns success T/F
        if ( success ) {
            $("#follow").remove();
            $("#follow-container").html('<div id="unfollow"><a>Unfollow profile</a></div>');
        }
    });

    $("#unfollow a").on("click", function() {
        // $.getJSON fn here that unfollows profile and returns success T/F
        if ( success ) {
            $("#unfollow").remove();
            $("#follow-container").html('<div id="follow"><a>Follow profile</a></div>');
        }
    });

}
Run Code Online (Sandbox Code Playgroud)

假设用户单击"关注配置文件".该脚本删除#follow a链接并用链接替换它#unfollow a.但是,#unfollow a单击时运行的JS脚本不会执行,因为在页面加载后将此元素添加到DOM中.

为了解决这个问题,我尝试刷新这样的函数:

    if ( success ) {
        $("#follow").remove();
        $("#follow-container").html('<div id="unfollow"><a>Unfollow profile</a></div>');
        // reload function
        follow();
    }
Run Code Online (Sandbox Code Playgroud)

这不起作用.取消关注点击事件未注册.在这种情况下,如何重新加载DOM?

Moh*_*dil 7

使用事件委托 -

$("#follow-container").on("click","#follow a", function() {
Run Code Online (Sandbox Code Playgroud)

$("#follow-container").on("click","#unfollow a", function() {
Run Code Online (Sandbox Code Playgroud)

另外:你$(#follow-container")应该有一个错字$("#follow-container")