0

jquery を使用して 1 つのページにすべてのコンテンツを読み込むサイトをコーディングしています。すべての関数はそれ自体で正常に動作しますが、ナビゲートを開始すると、ロード関数を次々と呼び出すと、ページが完全にクラッシュするまで、すべてのインスタンスが少し遅くなります。

これは ajax の構造的な問題ですか?

ロード関数にコールバック関数を入れることもありますが、それらも問題なく動作します。

編集

わかりました、私はそれが一般的なものであるかどうか疑問に思っていましたが、明らかにそうではないので、いくつかのコードを示します:

// click and load part
$("#about").click(function(){   
    $("#c1").load('<?php echo get_site_url(); ?>/?page_id=5', 
        layout();
    });
});

//callback function, basically some css injection
function layout() {
        windowHeight = $(window).height();
        $(".column-content").css('height',windowHeight-(containerTop+20)+'px');
        $(".column-content_mode").css('height',windowHeight-(containerTop+60)+'px');
        $(".container-column").css('height',windowHeight-(containerTop+20)+'px');
}

$(document).ready({ //all the js }); あなたの介入の迅速さに感謝します.

4

2 に答える 2

1

Without looking at your code, I can tell you the most common cause for this problem:

$(function() {
    $('#target').load('/your/url', function() {
        $('.someclass').click(function() {
            // Click handler for the new elements you just added
        })
    });
});

The problem here is that you are not only adding the handlers to the new elements that were just loaded, but you are also adding handlers to all of the existing elements on the page. It compounds exponentially!

To get around this, use the on method to add the handlers once, and it'll automatically add them for new elements.

$(function() {
    $('#target').on('click','.someclass',function() {
        // Click handler for the new elements you will add in the future
    });
    $('#target').load('/your/url', function() {
        // Nothing to do here now
    });
});

Edit

$("#about").click(function(){   
    $("#c1").load('<?php echo get_site_url(); ?>/?page_id=5', 
        layout();
    });
});

The second argument to load should be a function reference. Get rid of the () there so you don't immediately call that function. You just want to pass the name, not execute it. Also, your } is unmatched. Doublecheck it here.

于 2013-09-20T16:08:29.697 に答える