我知道您无法将参数传递给匿名函数,例如点击事件:
$(.....).click(function(e,'parameter-that-can\'t-be-passed'){
})
但为什么呢? 我不明白事件对象是如何传递给函数的。如何通过事件处理程序对匿名函数施加限制?这对我来说似乎很奇怪。
更新
对于那些可能偶然发现这个问题的人,也想知道对象来自哪里,可能是因为缺乏关于函数回调的知识,我鼓励你看到这个问题:
Getting a better understanding of callback functions in JavaScript
答案 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。我还没有测试过代码,但基本的想法是