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

相關問題