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

jQuery如何在单击div时只触发一次事件,jquery,events,live,Jquery,Events,Live,这可能是对jquery的限制 我想触发live()事件。但我只想使用one()事件触发它一次 目前,我有代码的打击。如何将此限制为只调用一次 $(".sub-content").live('click', function() { var id = this.id; $.get("InfoRetrieve", { theid:id }, function(data) { addContent(data, id) } ); }); 有几种方法可以做

这可能是对jquery的限制

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

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

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

有几种方法可以做到这一点。首先,您可以使用一个标记:

<div class="sub-content not-loaded">...</div>
显然,您也可以用另一种方式(添加一个类来标记它已被加载)。我不是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);
  ...
}
我不能百分之百确定这是否适用于
live()
,但是(因为
live()
可能会重新绑定它)。

您可以使用以下方法:


但我从未测试过它。

这将删除所有单击事件。OP只想确保每个div只加载一次,这不是一回事。当第一个div被点击时,你的方法会杀死所有的点击事件,这样就不会点击其他div。在这种情况下,它似乎不起作用,但无论如何,我肯定学到了一些东西,谢谢。
$("div.sub-content").click(load_content);

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