所以如果我这样做:
$('#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/。