我正在使用一个对话框来更新我的数据库并删除服务。
不幸的是,它仅适用于第一次“删除”点击。
所以,我点击打开对话框。我面临着5项服务的清单。
我点击删除第5个服务,数据库更新,列表(在对话框内)重新加载,选择标记(在主页面上)重新加载好。
如果我在第4次服务中重复此步骤,则不会发生任何事情:db update,list update和select update
我的jquery处理程序在下面,是不是知道为什么这不起作用?
$(function () {
$(".deletesector").click(function () {
var name = $(this).attr('name');
var dataString = 'serviceid=' + name;
$.ajax({
type: "POST",
url: "./ajax/remove-service.php?" + dataString,
dataType: "html",
data: dataString,
success: function (msg) {
//UPDATE THE SELET BOXES CONTAINING THE SERVICES
$("#service1-holder").load('./views/service-list1.tmp.php');
// UPDATE THE LIST OF SERVICE
$("#list-of-services").load('./views/list-of-services-for-removal.php');
}
});
});
});
答案 0 :(得分:4)
不要使用.click重做那里的ajax事件。请使用.on()。
.on()方法将事件处理程序附加到当前选定的集合 jQuery对象中的元素。从jQuery 1.7开始,使用.on()方法 提供附加事件处理程序所需的所有功能。对于 帮助转换旧的jQuery事件方法,请参阅.bind(), .delegate()和.live()。要删除与.on()绑定的事件,请参阅 .off()。附加仅运行一次然后删除的事件 本身,见.one()
请参阅此处的文档:http://api.jquery.com/on/
所以你的代码是:
$(function () {
$(document).on('click', '.deletesector', function () {
var name = $(this).attr('name');
var dataString = 'serviceid=' + name;
$.ajax({
type: "POST",
url: "./ajax/remove-service.php?" + dataString,
dataType: "html",
data: dataString,
success: function (msg) {
//UPDATE THE SELET BOXES CONTAINING THE SERVICES
$("#service1-holder").load('./views/service-list1.tmp.php');
// UPDATE THE LIST OF SERVICE
$("#list-of-services").load('./views/list-of-services-for-removal.php');
}
});
});
});
答案 1 :(得分:0)
也许你必须将事件绑定到新的#service-holder
...你试过吗?。
$( "#service-holder" ).bind( "click", your_function);