所以如果我这样做:
$('#foobar-parent').delegate('#foobar', 'click', function(){ //do something after #foobar-child is clicked });
如果我将#foobar-parent设置为display:none;,然后再设置回display:block;,事件是否仍然有效?
#foobar-parent
display:none;
display:block;
b4lqfgs41#
将样式设置为display: none不会以任何方式更改DOM,也不会更改任何事件侦听器的功能,它只会更改呈现时的可见性。但是,如果foobar-parent被设置为display: none,那么它的所有子节点也都将被隐藏,所以当它是display: none时,它们中的任何一个都将很难获得点击事件,因为它们也都被隐藏了。但是,一旦它被设置回display: block,并且它的子级再次可见,点击事件再次发生,delegate()事件处理将正常工作。事件侦听器不受显示样式设置值的影响。
display: none
foobar-parent
display: block
delegate()
2w2cym1i2#
是的,它仍然有效:http://jsfiddle.net/chF8S/。
2条答案
按热度按时间b4lqfgs41#
将样式设置为
display: none
不会以任何方式更改DOM,也不会更改任何事件侦听器的功能,它只会更改呈现时的可见性。但是,如果
foobar-parent
被设置为display: none
,那么它的所有子节点也都将被隐藏,所以当它是display: none
时,它们中的任何一个都将很难获得点击事件,因为它们也都被隐藏了。但是,一旦它被设置回
display: block
,并且它的子级再次可见,点击事件再次发生,delegate()
事件处理将正常工作。事件侦听器不受显示样式设置值的影响。2w2cym1i2#
是的,它仍然有效:http://jsfiddle.net/chF8S/。