2016-04-30 3 views
2

Поскольку я хочу отменить (выключить) события, я завернул код внутри функции, но поскольку мне нужно увидеть, какой ключ нажат, мне нужно получить событие события (не знаю, как это называется.Как заставить параметр работать внутри функции события

// нормальный пример

$('body').on('keydown',function(event){ 
    if(event.keyCode == 37){ 
     // do something 
    } 
}); 

// мой пример

function keyDownHandler() { 
    if(event.keyCode == 39) { 
     // does not work 
    }  
} 

$('body').on('keydown', keyDownHandler); 
+2

'функцию keyDownHandler()' 'для функции keyDownHandler (событие)' –

+0

В первом примере вы определили функцию с 'event' параметра, в во втором примере вы опустили параметр 'event'. Зачем? Разница кажется мне довольно очевидной ... –

ответ

6

Вам нужно получить объект события, вы можете получить его в качестве аргумента функции обратного вызова

function keyDownHandler(event) { 
    // set it here ----^^^^^^--- 
    if(event.keyCode == 39) { 
     // works now 
    } 
} 

$('body').on('keydown', keyDownHandler); 
+0

@ user759235: рад помочь ..... –

+0

@ user759235: по крайней мере вам нужно проверить консоль ур .... там будет 'Uncaught TypeError : Не удается прочитать свойство 'keyCode' неопределенного ' –

0
$(document).ready(function() { 
    //1st way 
    $('body').on('keydown', function(event){ 
     keyDownHandler(event); 
    }); 

    //2nd way ,same as first but shorter use it for send event only 
    $('body').on('keydown', keyDownHandler); 

    //3rd way ,this way to send more data 
    $('body').on('keydown', {example:'hello world'},keyDownHandler2); 
}); 

function keyDownHandler(event) { 
    console.log(event.keyCode); 
} 

function keyDownHandler2(event) { 
    console.log(event.keyCode); 
    console.log(event.data.example); 
} 
+0

Лично я нахожу меньше кода проще, поэтому я бы сказал, что '$ ('body'). On ('keydown', keyDownHandler);' самый простой способ. Но «самый легкий» субъективен в любом случае .... –

+0

отредактировал 3-х способами – robert

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