如何恢复被删除元素上的JQuery事件?

问题描述 投票:1回答:1

在这个PHP中,我添加了以下HTML。我使用PHP是因为我从数据库中获取信息,但这与这个问题无关。

<?php
    echo "
    <div id='user_bio_container'>
    <p id='user_bio'>My bio<i id='user_bio_edit' class='fas fa-edit'></i></p>
    </div>
    ";
?>

这是我的脚本。当用户点击生物段落时,它将段落内部的信息存储在一个变量中,然后清空容器并添加一个表单。如果表单被取消,我想删除表单,并添加我之前在段落中的HTML。问题是,当我尝试这样做时,新的段落对事件(鼠标移动、点击......)没有反应。

    $('#user_bio_edit').css("display", "none");
    $(document).ready(function(){
        $("#user_bio").on('mouseover', function(){
            $('#user_bio_edit').css("display", "inline");
        });

        $("#user_bio").on('mouseleave', function(){
            $('#user_bio_edit').css("display", "none");
        });

        $("#user_bio").on('click', function(){
            var actualbio = $("#user_bio_container").html();
            $('#user_bio_container').empty();
            var user_bio_form = 
            "<form id='change_user_bio'>" +
            "<span id='cancel_user_bio'>Cancel</span>"
            "</form>";
            $("#user_bio_container").append(user_bio_form);

        //Button decision control
        $("#cancel_user_bio").on('click', function(){
            $("#user_bio_container").empty();
            $("#user_bio_container").append(actualbio);
            $('#user_bio_edit').css("display", "none");
        });

        });

    });

我试过使用 hide()show()但在两次取消表格后,它就停止工作了,我一直在HTML中添加表格,但没有显示。我也试过把按钮决定控制代码移到点击事件之外,但也不行。

javascript php html jquery javascript-events
1个回答
0
投票

这是个范围问题。actualbio 在外部是不可用的。$("#user_bio").on('click', function(){..}

改变这个

var actualbio = $("#user_bio_container").html();

actualbio = $("#user_bio_container").html();

并使用

var actualbio = ''; 

正下方

$(document).ready(function(){

这样一来 actualbio 内的所有事件处理程序中都可以使用 $(document).ready

关于事件无法运作的问题

你需要附加这样的事件,因为当你清除html时,#user_bio和所有附加的事件都会从dom中删除。

$("#user_bio_container").on('mouseover', "#user_bio", function() {......})
© www.soinside.com 2019 - 2024. All rights reserved.