加载后无法获取html内容

时间:2015-03-03 09:34:07

标签: javascript jquery html

我尝试使用以下代码替换已加载元素的上下文:

$("#menu1").load("./templates/menu.html");
var str = $("#menu1").html();
alert(str);
str.replace("[number]", "1");
$("#menu1").replaceWith(str);

但我总是得到一个空的strmenu1正确加载 menu.html 内容,所以我不知道发生了什么。

3 个答案:

答案 0 :(得分:2)

你需要在加载后测试字符串 - 你完成它的方式,它可以在负载仍在运行时运行。试试这个:

$("#menu1").load("./templates/menu.html", function() {
    var str = $("#menu1").html();

    alert(str);
    str.replace("[number]", "1");
    $("#menu1").replaceWith(str);
});

More information

答案 1 :(得分:2)

$("#menu1").load("./templates/menu.html", function(){
   //complete
   var str = $("#menu1").html();
});

加载部分不是即时的,因此您在var str = $("#menu1").html();有时间完成之前尝试应用load()

答案 2 :(得分:1)

你需要在load的回调函数中执行任务: -

例如: - )

<!DOCTYPE html>
<html>

  <head>
    <script data-require="jquery@*" data-semver="2.1.3" src="http://code.jquery.com/jquery-2.1.3.min.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body>
    Hello this is rachit 1 1 1 1.
    <div id="menu1"></div>
    <script>
      $("#menu1").load("index.html", function() {
    var str = $("#menu1").html();

    alert(str);
    str.replace("[number]", "1");
    $("#menu1").replaceWith(str);
});

    </script>
  </body>

</html>

Plunker