如何将参数传递给由事件处理程序触发的函数?

时间:2015-08-27 14:49:53

标签: javascript jquery

所以问题是我有一个事件监听器和一个函数:

$(document).ready(function() {

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

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

});

但如果我这样做,它会立即触发我的功能,而不是等待带有课程的元素' test'被点击。

如何防止它发生?将参数传递给在事件上触发的函数的正确方法是什么?

我觉得这是非常明显和容易的事情,但我只是错过了它。

3 个答案:

答案 0 :(得分:11)

你可以这样做:

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

在单击回调函数中传递函数。

此处有更多详情:.on() jQuery API Documentation

答案 1 :(得分:7)

您需要将该函数包装到另一个函数中,该函数将指定其参数。

$(document).ready(function() {

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

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

});

答案 2 :(得分:6)

除了将其包装到@palash和@ralh演示的匿名函数之外,您还可以使用.bind()

  

bind()方法创建一个新函数,在调用时,将其this关键字设置为提供的值,并在调用新函数时提供任何前面提供的给定参数序列。

$(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/