2015-08-27 405 views
2

所以,問題是我有一個事件偵聽器和一個功能:如何將參數傳遞給由事件處理程序觸發的函數?

$(document).ready(function() { 

    function insert_hint(element, string){ 
     console.log(string); 
    } 

    $('.test').on('click', insert_hint('123', '123')); 

}); 

,但如果我不喜歡這樣,它會立即觸發我的功能,而不是等待與類「測試」的元素被點擊。

如何防止它發生,以及將參數傳遞給正在事件上觸發的函數的正確方法是什麼?

我有一種感覺,這是非常明顯和容易的事情,但我只是想念它。

+6

包裝在另一個函數。 – Pointy

+1

爲什麼你會花時間寫這個問題,而不是隻在谷歌輸入標題,已經有成千上萬的答案? -1 – 1252748

回答

11

你可以簡單地這樣做:

$('.test').on('click', function() { 
    insert_hint('123', '123'); 
}); 

薪火點擊回調函數內的功能。

更多細節在這裏:.on() jQuery API Documentation

+0

11對一個答案(它不使用正確的術語)提出了一個如此簡單的問題,它本來不應該被問到......什麼是SO來了! :) –

7

你需要用的功能到另一個功能,這將指定其的論點。

$(document).ready(function() { 

    function insert_hint(element, string){ 
     console.log(string); 
    } 

    $('.test').on('click', function() { 
     insert_hint('123', '123'); 
    }); 

}); 
6

包成像@palash匿名函數的外面@ralh證明,你也可以使用.bind()

()方法創建一個新的函數,調用它時,有其綁定將此關鍵字設置爲提供的值,並在調用新函數時提供的任何前面給定的參數序列。

$(document).ready(function() { 

    function insert_hint(element, string, evt){ 
     console.log(element, string, evt); // "hello", "world", the click event 
    } 

    $('.test').on('click', insert_hint.bind(this, 'hello', 'world')); 

}); 

的jsfiddle:http://jsfiddle.net/8nahor6L/

相關問題