当事件上下文设置为'display:none`时,jQuery中的委托事件保持不变吗?

yyyllmsg  于 2022-12-03  发布在  jQuery
关注(0)|答案(2)|浏览(152)

所以如果我这样做:

$('#foobar-parent').delegate('#foobar', 'click', function(){
    //do something after #foobar-child is clicked
});

如果我将#foobar-parent设置为display:none;,然后再设置回display:block;,事件是否仍然有效?

b4lqfgs4

b4lqfgs41#

将样式设置为display: none不会以任何方式更改DOM,也不会更改任何事件侦听器的功能,它只会更改呈现时的可见性。
但是,如果foobar-parent被设置为display: none,那么它的所有子节点也都将被隐藏,所以当它是display: none时,它们中的任何一个都将很难获得点击事件,因为它们也都被隐藏了。
但是,一旦它被设置回display: block,并且它的子级再次可见,点击事件再次发生,delegate()事件处理将正常工作。事件侦听器不受显示样式设置值的影响。

相关问题