【发布时间】:2014-05-08 11:20:00
【问题描述】:
我有一个带有一些 HTML 的简单 PHP 文件(有一个 UL>LI>UL>LI 形式的列表,它使用 toggle() 函数。该函数打开 UL 并显示或隐藏 LI)。该页面还有一个可以正常工作的输入表单(将数据添加到数据库中)。
AJAX 表单成功后,我将整个div 删除并从数据库中重新打印。
我的问题:打印新页面后,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 函数会停止工作吗?
【问题讨论】: