0

希望我的标题没有误导。我在更改事件中有一些 ajax。例如:

$("#my-object").change(function(){
    $.get( ... );
});

是否可以通过调用 change() 来检测 ajax 完成:

$("#my-object").change().functionToCallAfterAjaxInChangeCompleted();

到目前为止,我唯一的想法是自己编写一些功能.change(function()..),但这不是我想要的方式。

4

3 回答 3

1

如果您使用.trigger()而不是.change()触发事件,则可以将附加参数传递给事件处理程序

$("#my-object").change(function(eventObj, additionalParam) {
    $.get(...).done(additionalParam.done);
}).trigger("change", { 
    done: function() {
        alert("ajax finished"); 
    }
});

例子

于 2013-11-08T14:54:57.120 回答
1

您可以使用 Promise 接口执行此操作:

// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.get(...);

jqxhr.done(function () {
    functionToCallAfterAjaxInChangeCompleted()
});
于 2013-11-08T14:43:14.020 回答
0

JQuery 文档中所述,您可以在成功回调中调用您的函数:

$("#my-object").change(function(){
  $.get( "someurl.com", function( data ) {
    ... // process your ajax data
    functionToCallAfterAjaxInChangeCompleted()
  });
});
于 2013-11-08T14:45:01.990 回答