我的页面中有以下脚本:
$(document).ready(function () {
$('.RemoveLink').click(function () {
//dialog box
$('#dialog').dialog({
autoOpen: false,
width: 400,
modal: true,
resizable: false
});
//end dialog box
var fileAddress = this.id;
var parent=$(this).parent().parent();
$('#dialog').dialog('open');
$('#dialog').dialog({ /*Initialising a confirmation dialog box (with cancel/OK button)*/
buttons: {
"delete": function () {
$(this).dialog('close');
$.ajax({
url: "url",
data: { id: fileAddress },
success: function (mydata) {
parent.hide();
//$('#FileThumbs .ImageFileItem[id=' + fileAddress + ']').hide();
},
type: "GET"
});
},
"cancle": function () { //if the User Clicks the button "cancel"
$(this).dialog('close');
}
}
})
return false;
});
$('.ResponseLink').click(function () {
var idval = this.id;
$.ajax({
url: "url",
data: { id: idval },
dataType: 'html',
success: function (mydata) {
$("#ContactArea").empty().append(mydata);
},
type: "GET"
});
return false;
});
});
你可以看到我也使用jquery ui拨号盒。当我单击带有“RemoveLink”类的链接时,它可以正常运行并弹出对话框,但在我点击“ResponseLink”类的链接然后单击带有“RemoveLink”的链接后,该页面不会显示对话框和链接作为普通链接。
你能帮帮我吗?
已更新:我使用的是asp.net mvc及其部分视图。我在部分视图中放了一些表单,并使用Ajax.BeignForm()方法对表单进行异步发送,但有一点。为了使验证能够使用Ajax.BeignForm(),我应该引用必要的脚本,即使我在一个调用局部视图的视图中引用了主题。我删除了那些重新引用的脚本,现在再次显示对话框,但我在表单上丢失了客户端验证!!!!!
答案 0 :(得分:0)
使用.delegate
代替.click
$('#ContactArea').delegate('.RemoveLink', 'click', function (e) {...
在您的情况下,您将click
事件附加到附加Click事件处理程序时出现的.RemoveLink
元素。清空并清空后,这些元素将替换为未附加事件处理程序的新元素集。
使用.delegate
会确保#ContactsArea
内的内容发生变化,但其中的.RemoveLink
元素会继续处理。在文档中阅读更多内容。