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、Safari5でテスト済み...

.load()関数を使用できると思いますが、1回のロードで複数の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

キャッシュをオンにします

$.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 に答える
0

問題を解決するための手がかりを見つけました...

#menudivに'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 に答える