JQuery/AJAX - Как загрузить несколько Div и заголовок страницы?
Я попробовал этот код (он работает, но когда мы нажимаем 3-4 раза, мой браузер зависает, возможно, из-за огромных переменных):
var elements = [ "content", "menu" ];
$.get(
url,
function(data)
{
// Elements
var resp = $("<div></div>").html(data);
$.each(
elements,
function(i, v)
{
var content = resp.find("#"+v);
$("#"+v).html(content);
}
);
// Title
var regexp = /<title>(.*)<\/title>/i;
document.title = data.match(regexp)[1];
// Change URL
history.pushState({ page: url }, url, url);
// Hiding loading div
}
);
Протестировано на Firefox 6.0, Chrome и Safari 5...
Я думаю, что я могу использовать функцию.load(), но я не могу загрузить несколько Div только с одной загрузкой...
И следующий код не работает:
var resp = $("<div></div>").load(url+" #content, #menu");
var content = resp.find("#content");
$("#content").html(content);
var menu = resp.find("#menu");
$("#menu").html(menu);
Спасибо за помощь!
2 ответа
Я нашел ключ к решению моей проблемы...
Добавив 'time()' (PHP-функцию) в div #menu, я заметил, что иногда jQuery загружает страницу несколько раз без какой-либо причины: именно поэтому мой браузер тормозит при загрузке...
У кого-нибудь есть идеи о том, как решить эту проблему?
Спасибо.
РЕДАКТИРОВАТЬ: Я думаю, что я решил свою проблему! Я не блокирую этот вопрос, пока не буду уверен в этом:)
Проблема заключалась в использовании нескольких идентификаторов, таких как:
<div id="content">
<div id="content">
</div>
</div>
Когда я загрузил свой контент. Итак, теперь код:
$.get(
url,
function(data)
{
// Elements
//var resp = $("<div></div>").html(data); <-- EDIT
var resp = $(data);
$.each(
elements,
function(i, v)
{
var content = resp.find("#"+v).html(); // HERE IS THE CHANGE, I ADDED .html()
$("#"+v).html(content);
}
);
// Title
var regexp = /<title>(.*)<\/title>/i;
document.title = data.match(regexp)[1];
// Change URL
history.pushState({ page: url }, url, url);
// Hiding loading div
}
);
Включить кеш
$.ajaxSetup({
cache: true,
});
остальная часть кода как есть
var elements = [ "content", "menu" ];
$.get(
url,
function(data)
{
// Elements
var resp = $("<div></div>").html(data);
$.each(
elements,
function(i, v)
{
var content = resp.find("#"+v);
$("#"+v).html(content);
}
);
// Title
var regexp = /<title>(.*)<\/title>/i;
document.title = data.match(regexp)[1];
// Change URL
history.pushState({ page: url }, url, url);
// Hiding loading div
}
);