所以问题是我有一个事件监听器和一个函数:
$(document).ready(function() {
function insert_hint(element, string){
console.log(string);
}
$('.test').on('click', insert_hint('123', '123'));
});
但如果我这样做,它会立即触发我的功能,而不是等待带有课程的元素' test'被点击。
如何防止它发生?将参数传递给在事件上触发的函数的正确方法是什么?
我觉得这是非常明显和容易的事情,但我只是错过了它。
答案 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/