2015-03-03 3 views
0

Я пытаюсь заменить контекст нагруженного элемента с помощью следующего кода:Не удается получить HTML содержания после нагрузки

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

Но я всегда получаю пустой str, то menu1 получает правильно уложенную с menu.html, поэтому я понятия не имею, что происходит.

+1

Можете ли вы попробовать заменить функции SetTimeout? –

+2

Вы читали документы для [.load()] (http://api.jquery.com/load/)? Самое главное здесь, что он выполняется асинхронно. Поместите следующий код в «полную» функцию обратного вызова. – Regent

ответ

2

Вам необходимо протестировать строку после загрузки - так, как вы ее сделали, ее можно запустить, пока нагрузка все еще продолжается. Попробуйте это:

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

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

More information

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

Loading часть не мгновенным, так что вы пытаетесь применить var str = $("#menu1").html();, прежде чем load() успевает завершить

+0

Какой смысл делать переменную 'str' global? – Regent

+0

@Regent нет смысла в моем примере. OP просто сделал это глобальным, поэтому я сохранил его таким образом. Позже он может выполнять другие операции с переменной str. – rottenoats

+0

Нет, было просто доказательством концепции проблемы, которую я имею. Благодаря! –

1

Вам нужно сделать задачу в функции обратного вызова нагрузка: -

Например :-)

<!DOCTYPE html> 
<html> 

    <head> 
    <script data-require="[email protected]*" 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

Смежные вопросы