jQuery如何在单击div时仅触发一次事件

时间:2009-12-14 09:07:45

标签: jquery events live

这可能会推动jquery的极限。

我希望触发live()事件。但我只想使用one()事件让它被触发一次。

目前我有代码打击。如何将此限制为仅被调用一次。

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

2 个答案:

答案 0 :(得分: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()可能会重新绑定它)。

答案 1 :(得分:0)

您可以使用die方法:

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

我从未测试过它。