JQuery:显示后删除了事件侦听器:none

JQuery: event listener removed after display:none?

本文关键字:事件 侦听器 none 删除 显示 JQuery      更新时间:2023-09-26

我有一个按钮,上面用jQuery bind()定义了一个"点击"事件监听器。事件侦听器工作良好,直到我(以编程方式)对父元素执行display:none(有效地隐藏了父元素和按钮)。当我取消隐藏父元素(display:block)时,按钮不再工作。

示例:假设我有以下HTML标记和以下事件侦听器:

$( ".my-button" ).bind( "click", myFunction );
<div class="container">
  <div class="my-button">Button</div>
</div>

如果我使用另一个jQuery函数进行

$(".container").css('display', 'none');

事件侦听器消失。这种行为是意料之中的事吗?是否需要在每次display:none之后重新绑定事件侦听器?

http://jsfiddle.net/gadL2rag/

$(".container").css('display', 'none'); 

不会解除事件的绑定,而是隐藏.conta容器div及其子级。但是在您调用$(".contator").css('display','block')之后;同样,事件仍然存在,您不必再次绑定它。希望这能帮助