【发布时间】:2014-08-27 05:47:58
【问题描述】:
我有一个使用 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之后是否需要重新绑定事件监听器?
【问题讨论】:
-
你能重现这个问题吗?
-
浏览器控制台有错误吗?
-
使用 $._data('.my-button', 'events'); 取消隐藏后检查事件监听器;
-
请提供小提琴或代码示例。理论上绑定事件不应该那样消失。
-
您是否尝试将
$( ".my-button" ).bind( "click", myFunction );切换为$( ".my-button" ).on( "click", myFunction );?这可能会解决绑定问题。
标签: javascript jquery css