我有jsfiddle代码。我的是一个Cal
对象,它由init
函数和另一个名为Event
的对象组成。在Event
内,我有两个函数init
和show
。我正在做的是调用init
对象的Cal
函数并在那里传递参数。在这个init
函数中,我调用Event
的{{1}}函数并在此处传递相同的参数。当用户点击控制台中显示init
的{{1}}链接时,我在init
函数内调用show
函数。但是当我运行此代码时,它会在点击Event
之前在控制台中显示.button
。 为什么以及如何使其工作以便在我点击.button时显示参数?
这是我的代码
param
答案 0 :(得分:4)
.on()期望参数2是一个函数,而不是该函数的返回值
$('.button').on('click', function() {
// Here this points to the button DOM object.
Cal.Event.show(param)
});
答案 1 :(得分:2)
在这行代码中:
init: function (param) {
$('.button').on('click', this.show(param));
},
您调用 show
函数,然后将其返回值传递到on
,以便在您调用Cal.Event.init
时运行。单击发生时,您不会给on
代码调用。为此,请将其放在事件处理函数中:
init: function (param) {
$('.button').on('click', function() {
Cal.Event.show(param);
});
},
请注意,我已将this
更改为Cal.Event
,因为在对处理函数的调用中,this
将是对该按钮的引用,而不是Cal.Event
。
答案 2 :(得分:2)
您立即致电this.show(param)
。将其更改为:
init: function (param) {
$('.button').on('click', $.proxy(function() {
this.show(param);
}, this));
},