jquery load - 在不解析整个页面的情况下获取片段

时间:2014-10-14 19:33:59

标签: javascript jquery

这有点开放,但我已经在这几个小时了。

我正在使用像这样的

加载jquery加载大量页面的各个部分
$(‘#destination’).load(‘content.html #section-i-want’);

...将整个页面加载到客户端,然后显示我们想要的位。

麻烦的是,这个页面是GIGANTIC,一旦通过Cordova渲染到一个HTML应用程序,它就会耗尽内存。

有没有办法在没有客户端首先获得整页的情况下加载文档的一部分?我知道这不是特别有意义,但我想我会把它放在那里以防万一有任何想法。

对此的任何建议都将非常感谢!

2 个答案:

答案 0 :(得分:1)

是。你可以把内容分成更小的html文件加载到多个部分,然后在load()的回调中加载它们:

$('#destination-top').load('content-top.html', function() {
    $('#destination-middle').load('content-middle.html', function() {
        $('#destination-bottom').load('content-bottom.html' );
    });
});

通过将下半部分放在回调函数中,jQuery将不会在顶部完成之前加载中间部分,并且在中间部分完成之前不会加载底部。

但这不仅难以维持而且只是全面的坏形式,但它实际上无法解决您的核心问题:内存不足。为此,请了解任何延迟加载或其他创造性解决方案都无法解决此问题。相反,您需要简单地:加载更少的内容。那是你的实际问题。

编辑:我排除了#section引用,因为它不仅在语法上是错误的,而且jQuery仍然必须检索相同数量的内容,然后解析它以找到注入DOM的#section,这可能是可能消耗相当数量的内存。

答案 1 :(得分:0)

这只会加载#section-i-want

的内容
$(‘#destination’).load(‘content.html #section-i-want’);