我的页面上有 2 个使用 Ajax 的元素。一个是简单的复选框(设置默认值),另一个是由链接触发的弹出窗口。弹出窗口必须加载一堆元素,所以我有一个由 ajaxStart() 触发并隐藏在 ajaxStop() 处的“正在加载...”覆盖 div。
一切正常,除了复选框和弹出窗口都触发了 ajaxStart() 加载覆盖。它对复选框来说很烦人,因为它是我不想要的 div 的快速“闪烁”。
我的问题:我如何只为页面上的特定元素而不是页面上的每个 Ajax-able 元素触发 AjaxStart?
HTML
<input type="checkbox" id="defaultproject" />
<a class="openDialog" data-dialog-id="subscriberDialog" data-dialog-title="Project Subscriber" href="/Project/CreateSubscriber/1020" id="newsubscriber">Add Subscriber</a>
Javascript
//POPUP
$(document).ready(function () {
$(".openDialog").live("click", function (e) {
e.preventDefault();
$("<div></div>")
.addClass("dialog")
.attr("id", $(this).attr("data-dialog-id"))
.appendTo("body")
.dialog({
title: $(this).attr("data-dialog-title"),
close: function () { location.reload() },
modal: true,
draggable: false,
resizable: false,
width: 500
})
.load(this.href);
});
$(".close").live("click", function (e) {
e.preventDefault();
$(this).closest(".dialog").dialog("close");
});
//CHECKBOX
$("#defaultproject").change(function ()
{
var isitchecked = document.getElementById("defaultproject").checked
$.ajax({
url: '@Url.Action("SetDefaultProject")',
data: {"id": ProjectId, "isitchecked": isitchecked },
type: 'POST',
cache: 'false',
success: function (response) {
document.getElementById("defaultproject").disabled = "disabled";
},
error: function (xhr) {
alert('There was an error. Please try again');
document.getElementById("defaultproject").checked = ""
}
});
});
//SHOW LOADING DIV
//*** THIS IS WHERE I'M HAVING PROBLEMS
$('.openDialog').ajaxStart(function () {
$('#loadingdiv').show();
}).ajaxStop(function () {
$('#loadingdiv').hide();
});