1

このコードを使用して、外部ページを動的にロードしています

$(function() {
   $('#nav a').click(function() {
    var page = $(this).attr('href');
    $('#content').load(page + '.php');
    return false;
    });
});

メニュータブの1つをクリックするたびに、新しいHTTPリクエストが送信され、ページが再度読み込まれることに気付きました。各ページを1回ロードする方法を知りたいので、タブを確認すると、既にロードされているページが新しい要求を送信せずに表示されますか?

4

2 に答える 2

3

.data()を使用して、既に読み込まれているタブにフラグを「タグ付け」し、タグが存在しない場合にのみ HTTP 要求を発行することができます。

編集:クリプトナイトのコメントに関して、これは問題への簡単なアプローチになります:

var pages = {};

$(function() {
  $('#nav a').click(function() {
    var page = $(this).attr('href');

    if (!(page in pages)) {
      $.get(page, function (data) {
        pages[page] = data;
      });
    }

    $('#content').html(pages[page]);

    return false;
  });
});
于 2012-09-27T19:52:16.443 に答える
0
$('#nav a').click(function(e) {
    e.preventDefault();
    $this = $(this);
    if ($this.data('loaded') !== true) {
        // Load it.
        $this.data('loaded', true);
    } else {
        alert('Already loaded that one!');
    }
});

これはあなたが必要とすることをします。// Load it.コメントがある場所にロード コードを挿入する必要があり、elseブロックも削除する必要がある場合があります。 http://jsfiddle.net/rRumK/

于 2012-09-27T20:00:37.280 に答える