0

これはおそらく jquery の限界を押し広げています。

live() イベントをトリガーしたい。しかし、おそらく one() イベントを使用して一度だけトリガーさせたいと思います。

現在、私はコードブローを持っています。これを一度だけ呼び出されるように制限するにはどうすればよいですか。

    $(".sub-content").live('click', function() {
        var id = this.id;
        $.get("InfoRetrieve", { theid:id }, function(data) { addContent(data, id) } );
    });
4

2 に答える 2

1

いくつかの方法があります。まず、マーカーを使用できます。

<div class="sub-content not-loaded">...</div>

と:

$("div.sub-content.not-loaded").live("click", function() {
  $(this).removeClass("not-loaded");
  ...
});

明らかに、これを別の方法で行うこともできます (ロード済みであることを示すクラスを追加します)。私は 100% ではありませんが、次のlive()場合に上記が正しく処理されます。

$("div.sub-content.not-loaded").live("click", function() {
  if ($(this).hasClass("not-loaded")) {
    $(this).removeClass("not-loaded");
    ...
  }
});

動作します。

または、イベントのバインドを解除できます。

$("div.sub-content").click(load_content);

function load_content() {
  $(this).unbind("click", load_content);
  ...
}

ただし、それがうまくいくかどうかは100%確信が持てませんlive()(再live()バインドするだけかもしれません)。

于 2009-12-14T09:11:47.297 に答える
0

dieメソッドを使用できます。

$(".sub-content").live('click', function() {
   $(this).die('click');
   var id = this.id;
   $.get("InfoRetrieve", { theid:id }, function(data) { addContent(data, id) } );
});

私はそれをテストしたことはありません。

于 2009-12-14T09:21:26.730 に答える