Jquery load():未检索到的body类

时间:2011-05-10 20:36:06

标签: javascript jquery ajax

当我使用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);
    }
});

3 个答案:

答案 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元素。这个想法是:

  1. 将响应的BODY标记变为DIV
  2. 用身体包裹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
      });
    
  3. 它适用于Chrome,因此我相信其他浏览器也适用。