我想在触发on事件时加载一个函数。
我有这段代码,但它不起作用。
function myFunction(data){
alert(data);
}
$(".element").on('keyup', myFunction('a'));
我不想这样调用这个函数:
$(".element").on('keyup', function(){
myFunction('a');
});
如何使这项工作? 彼得
答案 0 :(得分:4)
on
的委托版本允许传递数据以及函数:
$(document).on('keyup', ".element", 'a', myFunction);
function myFunction(e){
alert (e.data);
}
JSFiddle:http://jsfiddle.net/TrueBlueAussie/kqLqvgp9/2/
注意:应该可以使用非委派 on
处理程序传递数据,但它会将'a'
参数混淆为选择器并认为它是委托的。
正如nnnnnn
指出的那样,如果您不想要委托的事件处理程序,则可以用null
替换选择器:
JSfiddle:http://jsfiddle.net/TrueBlueAussie/kqLqvgp9/5/
$('.element').on('keyup', null, 'a', myFunction)
function myFunction(e){
alert (e.data);
}
答案 1 :(得分:0)
你可以这样做:
function myFunction(data){
return function(){
alert(data);
}
}
$(".element").on('keyup', myFunction('a'));
您基本上会创建一个始终使用数据来调用警告功能的功能。
您也可以轻松地重复使用
$(".element").on('keydown', myFunction('b'));
答案 2 :(得分:0)
jQuery需要一个回调函数。您可以将函数作为参数传递,如:
function my_fx(data){
console.log(data)
}
$(".elem").on("keyup", my_fx); // data argument will be a jQuery Event object
但是如果你需要自定义信息,你可以这样做一个闭包:
function make_fx(custom_data){
return function(jquery_event){
console.log(custom_data);
}
}
$(".elem").on("keyup", make_fx("foo"));