当我使用jquery的.load()
函数加载下一个页面时,它不会检索该页面正文的类。有没有办法实现这个目标?
谢谢:)
以下是代码:
$(document).ready(function () {
if(navigator.standalone){
$('a').live("click", function (e) {
var link = $(this).attr('href');
if ($(this).hasClass('noeffect')){
}
else {
e.preventDefault();
$("body").load(link);
};
});
}
else {
window.scrollTo(0, 0.9);
}
});
答案 0 :(得分:1)
所以你将身体放入体内?不确定这会按预期工作!
一些HTML会有所帮助,但我猜这就是问题所在。
在您加载到身体的页面中,将它们放在div而不是body标签中。这应该避免身体内部的身体问题。
编辑:
你可以做的是做一个常规的ajax调用来获取你的新HTML。然后删除你当前的身体,并将你从ajax调用中获得的东西追加到你的html。我从来没有尝试过类似的东西,但是如果你不能改变你回来的html,那可能是最好的尝试。
答案 1 :(得分:1)
您可以尝试使用replaceWith:
$(document).ready(function () {
if(navigator.standalone){
$('a').live("click", function (e) {
var link = $(this).attr('href');
if ($(this).hasClass('noeffect')){}
else {
e.preventDefault();
$.get(link, null, function(result) {
$("body").replaceWith(result);
});
});
}
else {window.scrollTo(0, 0.9);}
});
这假设响应仅包含正文及其内容。如果它包含您可能需要的html $("html").replaceWith(result)
答案 2 :(得分:0)
我找到一个非常简单的解决方案来获取ajax响应的body元素。这个想法是:
用身体包裹DIV
$.get(url)
.success(function(data, textStatus, jqXHR){
var data = data.replace('<body', '<body><div id="body"').replace('</body>', '</div></body>');
var body = $(data).filter('#body');
// feel free the get HTML, class, attributes, etc. of ajax response BODY
});
它适用于Chrome,因此我相信其他浏览器也适用。