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

时间:2014-12-05 12:07:42

标签: javascript jquery bind onkeyup

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

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

    function myFunction(data){
        alert(data);
    }

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

我不想这样调用这个函数:

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

如何使这项工作? 彼得

3 个答案:

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