gpt4 book ai didi

针对特定元素的 JQuery AjaxStart

转载 作者:行者123 更新时间:2023-12-01 03:00:31 24 4
gpt4 key购买 nike

我的页面上有 2 个使用 Ajax 的元素。一个是简单的复选框(设置默认值),另一个是由链接触发的弹出窗口。弹出窗口必须加载一堆元素,因此我有一个“正在加载...”覆盖 div,它由 ajaxStart() 触发并隐藏在 ajaxStop() 处。

除了复选框和弹出窗口都会触发 ajaxStart() 加载覆盖之外,一切正常。它对于复选框来说很烦人,因为它是我不想要的 div 的快速“闪烁”。

我的问题:如何只为页面上的特定元素而不是页面上的每个可 Ajax 的元素触发 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();
});

最佳答案

为什么要使用事件?如果仅特定于 pop 使用回调函数:

$(".openDialog").live("click", function (e) {
e.preventDefault();

$('#loadingdiv').show();
$("<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,function(){
$('#loadingdiv').hide();
});
});

关于针对特定元素的 JQuery AjaxStart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10864182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com