我有以下代码:
$("#scheduleLink").trigger("click");
alert("text")
这是点击处理程序:
$("#scheduleLink").bind("click", (function () {
loadScheduleEvent();
$(".wrap_tabs").find("a").removeClass("active");
$(this).addClass("active");
}));
和loadScheduleEvent
功能:
function loadScheduleEvent() {
var eventId = $(".movie").attr("eventId");
var type = $(".movie").attr("type");
$("#publicationBlockContent").load("/Publication/EventSchedule?eventId=" + eventId + "&type=" + type);
}
我认为这段代码工作异步。仅在alert("text")
完成时我才想要loadScheduleEvent
次来电。我怎样才能做到这一点?
感谢。
更新
实际上,代替alert("text")
有一些代码。并且,我无法将此代码移动到$.load
函数的回调。
答案 0 :(得分:2)
使用.load回调
$("#publicationBlockContent")
.load("/Publication/EventSchedule?eventId=" + eventId + "&type=" + type,
function(){alert("text");}
);
rtm http://api.jquery.com/load/了解其他回调参数等。
答案 1 :(得分:1)
如果您不希望移动该代码替换为警报,则可以执行的操作是触发一个事件,该事件会触发您的行为,并被警报取代。
$("#scheduleLink").bind("click", (function () {
loadScheduleEvent();
$(".wrap_tabs").find("a").removeClass("active");
$(this).addClass("active");
}));
$(window).bind("scheduleComplete", (function (event,params) {
alert(params);
}));
现在在loadScheduleEvent中你必须触发它。
function loadScheduleEvent() {
var eventId = $(".movie").attr("eventId");
var type = $(".movie").attr("type");
$("#publicationBlockContent").load("/Publication/EventSchedule?eventId=" + eventId + "&type=" + type,function(){$(window).trigger("scheduleComplete");});
}
最后,当您执行此序列时,您必须仅触发单击事件
$("#scheduleLink").trigger("click");
此外,如果您不希望为窗口公开scheduleComplete事件,您也可以将它与scheduleLink绑定,并获得该范围和特定的行为!!! ...
答案 2 :(得分:0)
$("#publicationBlockContent").load"/Publication/EventSchedule?eventId=" + eventId + "&type=" + type,
function (responseText, textStatus, XMLHttpRequest) {
if (textStatus == "success") {
alert("success")
}
if (textStatus == "error") {
alert("failed")
}
}
答案 3 :(得分:0)
看起来有3个解决方案:
1 - 创建一个函数,并从.load
上的回调中调用它function loadComplete() {
alert("text");
}
$("#scheduleLink")
.on("click", function () {
$("#publicationBlockContent")
.load("/my-url", function () {
loadComplete();
});
})
.trigger("click");
2 - 将自定义事件绑定到名为“loadComplete”的$(“#scheduleLink”),并从.load
上的回调触发它$("#scheduleLink")
.on("loadComplete", function () {
alert("text");
})
.on("click", function () {
$("#publicationBlockContent")
.load("/my-url", function () {
$("#scheduleLink").trigger("loadComplete");
});
})
.trigger("click");
3 - 如果你不需要.load,你可以使用$ .ajax,$ .get和$ .post支持的promise对象
$("#scheduleLink")
.on("click", function () {
return $.get("/my-url", function () {
$("#scheduleLink").trigger("loadComplete");
});
})
.trigger("click");
var promise = $("#scheduleLink").triggerHandler("click");
promise && promise.done(function () {
alert("click");
});