同一页上多个触发器的jQuery Keyup事件优先级

时间:2013-01-17 19:04:41

标签: jquery events event-bubbling keyup

抱歉这个糟糕的标题。

我有一个可以在每个页面上弹出的联系表单。用户可以点击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

0 个答案:

没有答案