抱歉这个糟糕的标题。
我有一个可以在每个页面上弹出的联系表单。用户可以点击Esc关闭表单。工作正常。
<form id="contactForm" method="post" class="open" style="display: block;">
<input id="send" type="hidden" name="send">
<input type="hidden" value="/downloads/" name="_wp_http_referer">
<div id="main">
<input type="hidden" value="mailAction" name="action">
<a class="close" href="#">x</a>
</form>
jQuery('a.close').click( function(e) {
e.preventDefault();
jQuery('#overlay').fadeOut( 'slow');
jQuery('#contactForm').removeClass('open').slideUp();
});
// When the "Escape" key is pressed, close the form
jQuery('#contactForm').keydown( function( event ) {
if ( event.which == 27 ) {
jQuery('#contactForm a.close').trigger('click');
}
} );
行。现在在其他一些页面上,我有另一个下拉div,它不是一个表单。用户可以再次点击Esc关闭表单。因为 - 我必须将密钥绑定到文档:
jQuery(document).keyup( function( event ) {
if ( event.which == 27 ) {
if( jQuery('#modalpopup').is(':visible') )
jQuery('#modalpopup .close').trigger('click');
else if ( jQuery('#myplayer').is(':visible') )
jQuery('#myplayer .close').trigger('click');
}
} );
这些页面上发生的事情是,keyup永远不会“起泡”到#contactForm。我错过了什么?有没有办法让第二个处理程序“传递”keyup事件,以便它冒泡到#contactForm?
或者我是否需要将这些其他div包装成虚拟形式,以便它们可以拥有独立的keyup事件处理程序?
TIA,
--- JC