0

最近、クリックイベント内で $.ajax を起動する必要がある新しい関数があり、次のようなコードがありました。

$('.ClickMe').on('click', function() {

   // Do something

   $.ajax({
     type: 'POST',
     url: 'Foo.aspx/BarWebMethod',
     data: '{}',
     contentType: 'application/jspn',
     dataType: 'json',
     success: function(data) {
       // Do good thing
     },
     error: function() {
       // Do something bad
     }

});

私は、ページの読み込み中に WebMethod への AJAX 呼び出しを開始し、クラスに「ClickMe」を含む要素をクリックしたときに呼び出しを開始する代わりに、すべての結果をキャッシュすることに気付きました。

機能的にはすべて問題ありませんが、約数百の要素が上記のコードに接続されるため、これらの数百の過剰な AJAX 呼び出しを実行したくありません。ユーザーがいずれかの要素をクリックしたときにのみ、そのコードを実行したいと考えています。

何か案が?

4

3 に答える 3

1

何らかの方法で実際にクリック イベントを発生させていないことを確認する必要があります。

簡単にするために、.onではなく.clickを使用します。

$(document).ready(function() {
  $("#target").click(function() {
    alert("Handler for .click() called.");
  });
});

内にイベントをラップする$(document).readyと、クリック イベントをバインドする前にドキュメントが読み込まれることも保証されます。

また、Firebug または Chrome 開発者ツール (F12 がデフォルトのキー バインディング) を使用して、ページをリロードしたときに実際にどのネットワーク リクエストが起動されているかを確認してください。

Chrome デベロッパー ツール - ネットワーク

これらのツールを使用すると、Web ページが実際に何をしているのかをより深く理解できるはずです。

于 2012-07-24T09:00:08.173 に答える
0

クラス clickme の何かがクリックされない限り、これは起動しません。従来の方法は、準備が整ったドキュメントに添付することです。

キャッシュをオフにしたくない場合は、以下にドキュメント準備完了の省略形を示します

$(function() {

  $.ajaxSetup({ cache: false });
  ...
  your click handler attached to element
});
于 2012-07-24T08:59:21.247 に答える
0

この関数内にスクリプトを配置します

$(document).ready(function() {
  // Here goes your script.
});
于 2012-07-24T08:59:27.473 に答える