【问题标题】:How to select and replace the whole page with jQuery如何用jQuery选择和替换整个页面
【发布时间】:2010-10-22 01:28:51
【问题描述】:

我的页面设计迫使我使用通过 ajax 加载的 html 刷新整个页面。

$('html').replaceWith(data);

给我错误。有什么想法吗?

【问题讨论】:

  • 请发布错误和数据内容
  • html 标签中不包含正在执行替换的脚本吗?如果您使用的是 body 标签,请确保您的 html 适合。

标签: jquery jquery-selectors css-selectors


【解决方案1】:

我遇到了同样的问题,但这没有帮助。 如果你还需要替​​换<head>标签(所以,整个页面),你也可以这样做

document.write(newPage);

【讨论】:

  • 我知道这是一个老问题,但为了将来的参考,这可行,但您必须了解它可能会留下旧的 DOM 脚本处理程序并导致内存泄漏。
  • 谢谢。它比我能想到的任何其他解决方案都好用。
【解决方案2】:

使用正文:

$('body').replaceWith(data);

【讨论】:

  • 虽然这不会替换 head 部分,它可能需要加载必要的 Javascript 和 CSS 文件才能正确呈现页面。
  • 实际上,jQuery 确实可以执行任何嵌入的 javascript。 CSS 样式表绝对会被应用。只要意识到您已删除的 CSS 样式表仍保留在规则集中,它们不会被删除。
【解决方案3】:

我遇到了一些问题

$("body").replaceWith(newPage)

给了我一些奇怪的 css 问题,但这很好用:

$("body").html(newPage);

【讨论】:

    【解决方案4】:

    这可能是您需要的解决方案,它会替换整个文档,包括其头部。加载新的 css、js 和其他资源不会有任何问题。我假设您通过调用 REST api 收到新的 html 内容:

    $.ajax({
      type: 'POST',
      url: form.attr('action'),
      data: form.serialize(), // serializes form elements
      success: function(response) {
        // re-writes the entire document
        var newDoc = document.open("text/html", "replace");
        newDoc.write(response);
        newDoc.close();
      }
    });
    

    【讨论】:

      【解决方案5】:

      使用“body”选择器执行时 jQuery.replaceWith 和 jQuery.html 的奇怪行为。通话结束后你松开 body 标签:

      $('body').replaceWith('<body>New body</body>');
      

      其他选择器不会发生这种情况:

      $('title').replaceWith('<title>New title</title>');
      

      此外,jQuery.html 不会将 body 标签加倍(就像它对其他标签所做的那样),并且在像这样调用时像 replaceWith 一样操作:

      $('body').html('<body>New body</body>');
      

      我希望这不是 jQuery 的灰色地带。或者,如果是,他们不认为要修复它。我有一些应用程序,我在应该使用 $('body').replaceWith 时使用 $('body').html。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-08
        • 2012-02-28
        • 2012-03-30
        • 2014-07-25
        • 2015-07-10
        • 1970-01-01
        • 2013-12-12
        相关资源
        最近更新 更多