告诉jQuery仅执行特定代码一次

3
有没有办法告诉jQuery只执行一次某个操作?例如,我现在需要jQuery在点击div时添加一些HTML。然后,每次有人再次点击该div时切换显示/隐藏。有没有办法做到这一点呢?我尽量不要太混乱。
编辑:问题已解决!
4个回答

18

使用one方法。

例如:

$('#myDiv').one('click', function() {
    $(this).append('...').click(function() { ... });
});

不要给评论点赞,你可以给答案点赞。 - SLaks
4
也许有人赞同解释为什么给出负评的原则,而不是赞同回答? - cletus
尽管最终这解决了我的问题,但其实并不是我一开始在寻找的。这是被接受的答案。 - williamg

8

有多种方法可以实现这一点。

首先,您可以使用标记,然后将其删除:

<div id="mydiv" class="not-initialized">
  ...
</div>

使用:

$("#mydiv").click(function() {
  if ($(this).hasClass("not-initialized")) {
    $(this).removeClass("not-initialized");
    // append content
  } else {
    $(this).toggle();
  }
});

其次,您可以更改事件处理程序:

$("#mydiv").click(append_content);

function append_content() {
  ...
  $("#mydiv").unbind("click", append_content).click(toggle_display);
}

function toggle_display() {
  $(this).toggle();
}

或者您可以测试 div 看看内容是否在那里。


我尝试测试内容是否存在,使用详细信息编辑了我的帖子...还是应该开始一个新主题? - williamg

4
你需要使用one方法。或者你可以使用hideshow而不是toggle

2

jQuery 的 toggle 方法: http://docs.jquery.com/Effects/toggle


(说明:toggle 是 jQuery 提供的一种用于展示和隐藏 HTML 元素的方法,可以通过上方链接查看详细介绍。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接