2016-04-30 55 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

相关问题