在ajax请求之后准备好jQuery文档

Dan*_*nny 6 javascript ajax jquery

我在更新ajax请求后未准备好的元素时遇到问题.

如果我myFunction()在页面加载上运行我的函数,如下所示:

$(function() {
 myFunction();
}
Run Code Online (Sandbox Code Playgroud)

我没有任何问题.但是,如果我然后使用类似的东西

$.ajax({
      url: this.href,
      dataType: "script",
      complete: function(xhr, status) {
        myFunction();
      }
    });
Run Code Online (Sandbox Code Playgroud)

返回$(".myElement").replaceWith("htmlHere").当完整事件触发时,元素根本就没有准备好.如果我在那里设置延迟,它再次正常工作.

当DOM准备就绪时,除了'完成'之外还有其他事件会被解雇吗?

更新:

这是实际的代码:

$(function() {
  $("a.remote").live("click", function(e) {    
    $.ajax({
      url: this.href,
      dataType: "script",
      success: function(xhr, status) {
                myFunction();
            }
    });

    e.preventDefault();
    return false;
  });

  myFunction();
});

function myFunction() {
    // Modify the dom in here
}
Run Code Online (Sandbox Code Playgroud)

失踪的); 对我来说只是一个错字.

香港专业教育学院现在尝试使用成功而不是完成,它似乎没有任何区别.

Gor*_*vic 5

我已经根据您的代码设置了一个jsfiddle,它似乎正在工作。

这是当前代码:

 $(function() {
  $("a.remote").live("click", function(e) {    
    $.ajax({
      url: this.href,
      dataType: "script",
      success: function(xhr, status) {
                myFunction();
            }
    });

    e.preventDefault();
    return false;
  });

});

function myFunction() {
    $("span").replaceWith("<p>test</p>");
}
Run Code Online (Sandbox Code Playgroud)

并将span标记替换为一个段落。请检查并与您的代码进行比较。如果相同,那么您的问题可能不在此函数之外(可能在myFunction中?)。


Dav*_*gel 0

$(function() {
 myFunction();
}
Run Code Online (Sandbox Code Playgroud)

应该

$(document).ready(function() {
 myFunction();
});
Run Code Online (Sandbox Code Playgroud)

或者如果您希望 ajax 在负载上运行。做

$(document).ready(function() {
 $.ajax();
});
Run Code Online (Sandbox Code Playgroud)