使用ajax调用
,我们能够在使用done()函数
运行后执行操作
$.ajax({
.....
})
.done ( function(data) {
..... (manipulate data using $.ajax result
})
现在我有一个 if-else
子句,其中包含 ajax-embedded
。
if (some condition)
{ //Standard HTML-element/tag manipulation
$("#obj1").append('<a class="trigger">Click Me </trigger>');
$(".SomeClass").remove();
......
}
else
{
//HTML-element/tag manipulation after $.ajax-call
$.ajax({
//perform ajax-call
})
.done(function (data) {
$("#obj1").append('<a class="trigger">' data.someProp '</trigger>');
})
}
//Perform actions: Part2
$(".trigger").Click(function() { Somefunction() });
我想知道 Jquery 是否提供了一种方法来使第 2 部分中的函数的执行停止,直到 if-else
中的所有操作完成(包括 >$.ajax
)?我似乎无法使用谷歌找到任何与此相关的内容(很可能我只是使用了错误的关键字)。
希望大家都能理解我的问题。如果您需要更多信息,请随时发表评论。
最佳答案
在这种情况下,您可以使用 jQuery Promise。 http://api.jquery.com/deferred.done/
var dfd = null;
if (some condition)
{ //Standard HTML-element/tag manipulation
$("#obj1").append('<a class="trigger">Click Me </trigger>');
$(".SomeClass").remove();
......
//Create Deferred object and resolve immediately
dfd = $.Deferred();
dfd.resolve();
}
else
{
//HTML-element/tag manipulation after $.ajax-call
//$.ajax returns Deferred
dfd = $.ajax({
//perform ajax-call
})
.done(function (data) {
$("#obj1").append('<a class="trigger">' data.someProp '</trigger>');
})
}
//Use when for waiting the Deferred to get resolved
$.when(dfd).then(function(){
//Perform actions: Part2
$(".trigger").Click(function() { Somefunction() });
})
关于javascript - JQuery:在 if-else 之后完成(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25120451/