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

Javascript 如何将参数传递给由事件处理程序触发的函数?,javascript,jquery,Javascript,Jquery,问题是我有一个事件监听器和一个函数: $(document).ready(function() { function insert_hint(element, string){ console.log(string); } $('.test').on('click', insert_hint('123', '123')); }); 但如果我这样做,它会立即触发我的函数,而不是等待类为“test”的元素被单击 如何防止这种情况发生?向事件触发的函数传

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

$(document).ready(function() {

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

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

});
但如果我这样做,它会立即触发我的函数,而不是等待类为“test”的元素被单击

如何防止这种情况发生?向事件触发的函数传递参数的正确方法是什么


我有一种感觉,这是非常明显和简单的事情,但我只是错过了它。

你可以简单地做到:

$('.test').on('click', function() {
    insert_hint('123', '123'); 
});
在click回调函数中传递函数


此处的更多详细信息:

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

$(document).ready(function() {

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

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

});

除了将其包装成@palash和@ralh等匿名函数外,还可以使用

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


JSFIDDLE:

将其包装在另一个函数中。你为什么要花时间写这个问题,而不只是在谷歌上键入标题,那里已经有成千上万的答案了-对一个简单到根本不应该被问到的问题的答案(没有使用正确的术语)进行投票。。。这是怎么回事!:)
$(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'));

});