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

您可以使用模具方法:

$(".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 回答