当事件上下文设置为“display:none”时,jQuery中的委托事件是否保持不变?



所以如果我这样做:

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

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

设置display: none样式不会以任何方式更改 DOM,也不会更改任何事件侦听器的功能。 它只会在渲染时更改可见性。

但是,如果foobar-parent设置为 display: none ,那么它的所有子项也都将被隐藏,因此它们中的任何一个都很难在display: none时获得点击事件,因为它们也都是隐藏的。

但是,一旦它被设置回display: block并且它的子项再次可见并且点击事件可以再次发生,delegate()事件处理将正常工作。 事件侦听器不受显示样式设置值的影响。

是的,它仍然有效:http://jsfiddle.net/chF8S/。

最新更新