2014-04-09 1 views
0

'setVisibilityOfWeekdaySelectbox'라는 함수를 사용하여 javascript 클래스를 작성했습니다. 개체를 만들고 함수 init()을 호출합니다. 이 함수는 아래 코드를 포함합니다. init()을 호출하면 'setVisibilityOfWeekdaySelectbox'함수가 호출됩니다. 내가 주파수 선택 상자를 바꿀 때 방화 녀가 그 기능을 찾을 수 없다고 말한다.jquery 이벤트의 Javascript-function-call

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

this 이벤트는 개체의 인스턴스가 아니라 요소 자체 내에 있습니다.

(하하, 그것은 예를 들어 전 세계적으로 이벤트에 액세스 할 수있는 범위에서) 인스턴스 개체를 var에 선언 :

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

을 그리고, 이벤트 내부 인스턴스에서 호출 :

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

코드에서 getReportTemplate()의 위치를 ​​모르지만 이벤트 내부에서 작동하지 않을 수도 있습니다. 인스턴스도 수정해야합니다.

+0

감사합니다. 객체의 var를 선언하면 문제가 해결됩니다. – IonTichy

관련 문제