在jquery事件中调用Javascript函数

时间:2014-04-09 14:03:09

标签: javascript oop

我用一个名为'setVisibilityOfWeekdaySelectbox'的函数编写了一个javascript类。我创建了对象并调用函数init()。此功能包含以下代码。当我调用init()时,将调用函数'setVisibilityOfWeekdaySelectbox'。当我更改频率选择框时,firebug说无法找到该功能。

    function ReportDefinition(options) {
        this.options = options;
    }

    ReportDefinition.prototype.init = function(){
       // change event of a select box
       $("#frequency").change(function(){
        this.setVisibilityOfWeekdaySelectbox();
        this.getReportTemplate().setFrequencyInformation();
       });

       this.getReportTemplate().setFrequencyInformation();
       this.setVisibilityOfWeekdaySelectbox();
    });

    ReportDefinition.prototype.setVisibilityOfWeekdaySelectbox = function (){
       if($("#frequency").val() === undefined){
        return;
       };

       if($("#frequency").val() === "WEEKLY"){
        $("#weekday_div").show();
       } else {
        $("#weekday_div").hide();
       }
   }

如何更改课程以使其有效?

1 个答案:

答案 0 :(得分:1)

事件中的

this不是您对象的实例,而是元素本身。

声明一个var来实例化你的对象(在一个可以被事件访问的范围内,例如全局,哈哈):

var report = new ReportDefinition();
report.init();

然后,在事件内部,从实例中调用它:

$("#frequency").change(function(){
    report.setVisibilityOfWeekdaySelectbox();
});

我不知道代码中的哪个位置是getReportTemplate(),但它在活动中也可能无效。你也必须修复它的实例。