jQuery如何在单击div时只触发一次事件
这可能是对jquery的限制 我想触发live()事件。但我只想使用one()事件触发它一次 目前,我有代码的打击。如何将此限制为只调用一次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) } ); }); 有几种方法可以做
$(".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) } );
});