我有一个简单的PHP文件,其中包含一些HTML(以UL>LI>UL>LI形式列出列表,使用toggle()函数。该函数打开UL并显示或隐藏LIs)。该页面还有一个输入表单,可以正确地工作(将数据添加到数据库中)。
一旦AJAX表单成功提交,我就会从数据库中删除整个div并重新打印它。
我的问题是:一旦新页面被打印出来,toggle()函数就会停止工作,直到刷新页面。
toggle函数(在外部JavaScript文件中):
表单:
表单发送功能:
一旦AJAX表单成功提交,我就会从数据库中删除整个div并重新打印它。
我的问题是:一旦新页面被打印出来,toggle()函数就会停止工作,直到刷新页面。
toggle函数(在外部JavaScript文件中):
$(document).ready(function() {
$(".product_category").click(function(event) {
event.preventDefault();
$(this).find("ul > .product").toggle();
});
});
表单:
<form id="addPForm">
<section id="product_input">
<input id="list_add_product" type="text" placeholder="Add a new product" onkeyup="checkProducts()">
<input id="list_add_product_button" type="button">
</section>
</form>
表单发送功能:
$("#list_add_product_button").click(function(event){
var txt=$("#list_add_product").val();
$.ajax({
type: "POST",
url: "addproduct2.php",
cache: false,
data: {product: txt},
success: onSuccess,
error: onError
});
// IF THE SUBMIT WAS SUCCESFULL //
function onSuccess(data, status)
{
console.log(data);
clearInput();
$('#main_list').empty();
$('#main_list').html(data);
}
function onError(data,status){
// something
}
});
我在console.log(data)
中打印出的内容:
<div class="product_category"><li id="baked" onclick="showBakedList();"><a class="list_text" id="baked_text">Baked [2]</a></li><ul id="ul_baked" class="inner_list"><li class="product" id="bread"><a class="liText">Bread | 0 Unit</a> </li><li class="product" id="croissant"><a class="liText">Croissant | 0 Unit</a> </li></ul>
现在,在我添加产品之前,toggle()
函数可以很好地工作。列表可以正常打开和关闭。控制台中没有任何错误,并且我在页面头部(第一个项目)加载了jQuery。
需要注意的是,在代码打印之前和之后查看源代码,除了打印的新附加LI之外,完全相同。
我是否遗漏了什么?在div数据刷新后,jQuery函数会停止工作吗?
$(document).on(...)
的解决方案,您将不需要每次重新打印jQuery函数。 - undefined