在这个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中添加表格,但没有显示。我也试过把按钮决定控制代码移到点击事件之外,但也不行。
这是个范围问题。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() {......})