4

在我的程序中,我有一个 click 事件,它对许多按钮执行相同的操作,只是事件处理函数的一小部分中的类对于每个按钮都不同。现在,我只是为此使用了一个匿名函数。附加到这个事件的函数很长,我预计会有很多按钮(可能有 60 个左右?)。我可以复制和粘贴当前工作的函数 60 次,但这会使我的 javascript 文件变得很大。

我想做的是在 on() 函数之外定义事件处理函数,所以我只能说$('#some_button').on('click', my_event_handler("my_arg") );
这将真正简化我的代码。

我做了一个 js fiddle,它提供了一个非常小的例子来说明我正在尝试做的事情:

http://jsfiddle.net/AsmmF/

唯一的问题是我无法让它工作!

我要去见泰德,回来后试试你的解决方案。

非常感谢您可以为我提供的任何帮助!

4

3 回答 3

5

您只需要将函数调用包装在匿名函数中。

$('#some_button').on('click', function() {my_event_handler("my_arg");} );

于 2012-07-02T23:20:48.923 回答
3
$('#some_button').on('click', my_event_handler("my_arg") )

应该:

$('#some_button').on('click', null, "my_arg", my_event_handler);

现场演示

于 2012-07-02T23:21:09.687 回答
2

让你的函数返回一个函数。

function button_click(some_var) {
    return function() {
        $('#button').after('<p>This is being attached: ' + some_var + '</p>');
    };
};
$('#button').on('click', button_click("hello") );

(演示在http://jsfiddle.net/63Le2/

于 2012-07-02T23:26:15.397 回答