我正在创建一个动态的待办事项列表。该列表从本地数据库下载并显示在表中。在每个待办事项处都有一个提交按钮,您可以按下该按钮,该待办事项将在数据库中注册为“完成”。在我的代码中,这是通过一个名为status的变量来完成的,在该变量中,值为1表示完成,值为0表示撤消。
我的问题是,您可以按下任何按钮,所有按钮都可以正常工作;新的状态被发送到PHP脚本,然后PHP脚本修改数据库中的状态值。则网页自动更新显示表格。但是如果你再试一次,在任何其他按钮上,它都不起作用。您必须重新加载网页,其他按钮才能正常工作。
下面是我的Jquery/AJAX代码:
$(document).ready( function() {
$('#todo_display_table input[type="submit"]').click(function(evt) {
evt.preventDefault();
var todo_id = $(this).val();
//document.write(todo_id);//debug
$.when(changeTodoStatusTo(1, todo_id)).then(updateTodoDisplay);
});
});
function updateTodoDisplay() {
$.post("./daily_todo_display.php", null, replaceTbodyHTML);
}
function replaceTbodyHTML(data) {
$('#todo_display_table tbody').html(data);
}
function changeTodoStatusTo(newStatus, todo_id) {
//Send til phpscript som lagrer ny status i databasen
var parameters = {
todo_id: todo_id,
newStatus: newStatus
};
return $.post("./daily_todo_change_todo_status.php", parameters); //, printDebugInfo);
}我也可以发布我的PHP脚本,但我已经分别测试了它们,它们似乎是有效的。同样,我的页面上的所有功能都工作正常,但在您单击一次后,它们似乎停止工作。
我检查了数据库,状态值只在第一次尝试(第一次单击任何按钮)时更新,这表明问题出在click()函数或changeTodoStatusTo()函数中。Thnx需要任何帮助,请不要犹豫,要求更多信息=)
发布于 2012-05-22 02:05:20
是否在更新时重新创建提交按钮?如果不看你所有的代码,就很难判断。您是否尝试过更改此设置:
$('#todo_display_table input[type="submit"]').click(function(evt) {要这样做:
$('#todo_display_table input[type="submit"]').live('click', function(evt) {如果适用,请查看以下内容:http://api.jquery.com/live/
发布于 2012-05-22 02:10:09
您不应该使用jQuery的实时函数:
从jQuery 1.7开始,不推荐使用.live()方法。使用.on()附加事件处理程序。旧版本jQuery的用户应该优先使用.delegate()而不是.live()。
此方法提供了一种将委托的事件处理程序附加到页面的文档元素的方法,从而简化了将内容动态添加到页面时事件处理程序的使用。有关更多信息,请参阅.on()方法中关于直接事件与委托事件的讨论。
jQuery live documentation
正如文档所述,请改用.on()。它的工作方式与.live()相同:)
发布于 2012-05-22 02:05:56
我猜您在更新click的html()时丢失了#todo_display_table事件代码。试试live()吧
$('#todo_display_table input[type="submit"]').live('click', function(evt) {https://stackoverflow.com/questions/10690240
复制相似问题