2014-12-05 125 views
1

此代码不隐藏框div这应该是隐藏的,当我按Esc键。隐藏元素按Esc

function Boxup(elementN, event){ 
    $("#"+elementN).css({ 
     "display":"block", 
     "top":event.pageY+"px" , 
     "left":event.pageX+"px"  
    }) 
} 
function hideCurrentPopup(ele){ 
    $(ele).parent().hide(); 
} 

    $(this).keyup(function(event) { 
     if (event.which == 27) { 
      disablePopup(); 
     } 
    }); 

我错过了什么吗?

+2

在你的榜样,当ESC键按下,你可以调用“disablePopup”,但在你的例子中没有disablePopup? – Kolban 2014-12-05 01:21:21

+1

另外,转义键似乎与'this'绑定......是否在其他代码中,或者你想绑定到像“body”这样的东西? – rfornal 2014-12-05 01:22:41

回答

1

从你的代码,我不能确切地告诉什么是this指的是在这一行:

$(this).keyup(function(event) { 

因为它this"textarea""input"它会触发事件如果该元素具有焦点,否则你正在寻找keyup事件登记document

但这里是你可以尝试。

function Boxup(elementN, event){ 
    $("#"+elementN).css({ 
     display : "block", 
     top : event.pageY , // px are not needed as they are default unit in jQ 
     left : event.pageX  
    }) 
} 

function hideCurrentPopup(ele){ // note your function name and the argument! 
    $(ele).parent().hide();  // (do you need .parent()? I don't know 
}        // without seeing any HTML sample) 

$(document).keyup(function(event) { // document is probably the selector you want 
    if (event.which == 27) { 
     hideCurrentPopup("#hereYourPopupID"); // try alike 
    } 
}); 

PS:请确保使用$(some Selector here).keyup(function(event) {你不会在任何情况下防止keyup事件冒泡DOM树到达documentElement