在单击按钮之前调用JavaScript函数

时间:2013-04-13 07:27:17

标签: javascript jquery

我有jsfiddle代码。我的是一个Cal对象,它由init函数和另一个名为Event的对象组成。在Event内,我有两个函数initshow。我正在做的是调用init对象的Cal函数并在那里传递参数。在这个init函数中,我调用Event的{​​{1}}函数并在此处传递相同的参数。当用户点击控制台中显示init的{​​{1}}链接时,我在init函数内调用show函数。但是当我运行此代码时,它会在点击Event之前在控制台中显示.button为什么以及如何使其工作以便在我点击.button时显示参数?

这是我的代码

param

3 个答案:

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

http://jsfiddle.net/9SLEX/3/