在事件上使用 jQuery 时执行 JavaScript 函数

Execute JavaScript function when using jQuery on event

本文关键字:执行 JavaScript 函数 jQuery 事件      更新时间:2023-09-26

我想在触发on事件时加载一个函数。

我有这个代码,但它不起作用。

    function myFunction(data){
        alert(data);
    }
    $(".element").on('keyup', myFunction('a'));

我不想像这样调用函数:

    $(".element").on('keyup', function(){
         myFunction('a');
    });

我该如何完成这项工作?Peter

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);
}
你可以

这样做:

function myFunction(data){
    return function(){
        alert(data);
    }
}
$(".element").on('keyup', myFunction('a'));

基本上,您将创建一个始终使用数据来调用警报函数的函数。

您也可以轻松重复使用它

$(".element").on('keydown', myFunction('b'));

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"));