2012-04-27 2 views
0

Так что у меня есть это ..Как передать обработчик ключа клиента с параметрами?

keyup_handler: function(e, item){ 
    if (e.which == 27) { 
     close_lightbox(item); 
     return false;  
    }; 
    } 

$(document).live('keyup', function(e){ keyup_handler(e, item) }); 

Это не возвращает console.log() 's I место здесь. Поэтому я предполагаю, что это не трогательно. Что мне не хватает? Как передать e или event keyup_handler?

JQuery 1.4.4

+0

Можете ли вы воспроизвести это в [jsfiddle] (http://jsfiddle.net)? –

+1

Можете ли вы быть более конкретным, чем «не работает»? Я бы ожидал, что в 4.7k rep вы бы научились задавать лучший вопрос. –

+0

Приношу свои извинения Антонию. Обновлено. – Trip

ответ

1

Вы возвращаетесь false от вызова keyup_handler, но не из функции, которая вызывает его, попробуйте сделать:

$(document).live('keyup', function(e){ return keyup_handler(e, item); }); 

Возможно, вам также потребуется внести изменения keyup_handler в return true;, если инструкция if не оценивается как истина.

Я предполагаю, что ваше очень неопределенное выражение «не работает» означает, что обычная функциональность клавиш не предотвращается при отпускании соответствующего ключа.

Кроме того, .live() - это устаревшая функция jQuery и на самом деле не предназначена для того, для чего вы ее используете. Используйте .on() (если вы используете jQuery 1.7+) или .bind() в противном случае.

+0

Ах спасибо! Это сработало. Я должен был бросить в ответ. Мои другие обработчики этого не нуждались. Огромное спасибо. – Trip

0

Попробуйте ->

$(document).live('keyup', function(e){ 
    if (e.which == 27) { 
close_lightbox(<selector-that selects-item>); 
     return false;  
    }; }); 
0
keyup_handler = function(e, item){ 
    var code = (e.keyCode ? e.keyCode : e.which); 
    if (code == 27) { 
     close_lightbox(item); 
     return false;  
    } 
} 

$(document).on('keyup', 'dynamic_element', function(e){ keyup_handler(e, item) });​ 

FIDDLE

жить() является устаревшим, и не знаю, почему вы должны использовать его в документе? Для более старых версий JQuery, я думаю, что это будет достаточно:

$(document).keyup(function(e){ keyup_handler(e, item) });​​​​​​​​​ 

Если вы не каким-то образом удалось сделать уровень документа в динамический элемент?

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