javascript事件处理如何处理参数?

时间:2014-03-14 22:03:03

标签: javascript events anonymous-function

我知道您无法将参数传递给匿名函数,例如点击事件:

$(.....).click(function(e,'parameter-that-can\'t-be-passed'){
})

但为什么呢? 我不明白事件对象是如何传递给函数的。如何通过事件处理程序对匿名函数施加限制?这对我来说似乎很奇怪。

更新

对于那些可能偶然发现这个问题的人,也想知道对象来自哪里,可能是因为缺乏关于函数回调的知识,我鼓励你看到这个问题:

Getting a better understanding of callback functions in JavaScript

1 个答案:

答案 0 :(得分:1)

JQuery允许您使用一些函数将其他数据传递给click事件。下面是一个例子

HTML:

<button id="button1">HI</button>
<button id="button2">HI</button>

JS:

var custom = "Hello world";

$('#button1').on('click', {txt:custom}, function (e) {

    this.innerHTML = e.data.txt; // button 1 text changes to Hello world
});

var customfn = function (txt) {
    // the scope of the txt argument will be
    // available in the returning function 
    return function () {
        this.innerHTML = txt; // button 2 text changes to BYE
    }
}

$('#button2').on('click', {txt:custom}, customfn("BYE"));

您还应该看看jQuery.proxy。我还没有测试过代码,但基本的想法是