0

我尝试了这段代码(它可以工作,但是当我们点击 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);

谢谢您的帮助!

4

2 回答 2

0

我找到了解决问题的线索...

通过在#menu div 中添加“time()”(PHP 函数),我注意到有时 jQuery 会无缘无故地多次加载页面:这就是为什么我的浏览器在加载过程中出现延迟的原因......

有人知道如何解决这个问题吗?

谢谢你。

编辑: 我想我解决了我的问题!在我确定之前我不会锁定这个问题:)

问题是使用多个 ID,例如:

<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
    }
);
于 2011-09-15T21:25:00.710 回答
0

开启缓存

$.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
    }
);
于 2011-09-13T19:23:19.800 回答