2014-12-05 2 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

В вашем примере, когда ключ КЭБ нажмите «disablePopup», но в вашем примере нет disablePopup? – Kolban

+1

Кроме того, escape-ключ, похоже, привязан к 'this' ... это внутри какого-то другого кода или вы хотите привязать к чему-то вроде« body »? – rfornal

ответ

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

Смежные вопросы