2016-06-24 5 views
0

私はjsクラスを使用してjQuery UIのdatePickerをdom要素に割り当てています。このすべての作品は、私が持っている問題は、onSelectパラメータです。 thisがdom要素に設定されているため、thisを使用してクラス内の関数を呼び出すことができません。Jsクラスがjquery datepickerにthis(class)を渡します

class form_validate{ 

     constructor(){ 
       this.addDatePickers(); 
     } 

    addDatePickers(){ 

     $(document).ready(function(){ 
         console.log('called'); 
       var datepickers = document.getElementsByClassName('dh-datepicker'); 
      var contextClass= this; 

      [].forEach.call(datepickers, function(d){ 
       $(d).datepicker({ 
       dateFormat: 'dd-mm-yy', 
       onSelect: function(contextClass){ 
        console.log(this); 
        contextClass.calledf(); 
       } 
       }); 
      }, contextClass); 
     }) 

    } 

    calledf(){ 
      console.log('yeaa'); 
    } 


}//end class 

var validater= new form_validate(); 

Iはまた、(上記contextClassを参照)オブジェクトvalidatorを渡し、変数にthisを節約とで通過しようとしています。 thisが変更されたときに、クラス内の関数を呼び出すにはどうすればよいですか?

https://jsfiddle.net/1t0wfuzw/6/

答えて

1

ジャストラインにこのような

var contextClass = this; 

上に移動:

class form_validate { 

    constructor() { 
    this.addDatePickers(); 
    } 

    addDatePickers() { 
    var contextClass = this; 
    $(document).ready(function() { 
     console.log('called'); 
     var datepickers = document.getElementsByClassName('dh-datepicker'); 

     [].forEach.call(datepickers, function(d) { 
     $(d).datepicker({ 
      dateFormat: 'dd-mm-yy', 
      onSelect: function() { 
      console.log(this); 
      contextClass.calledf(); 
      } 
     }); 
     }, contextClass); 
    }) 
    } 

    calledf() { 
    console.log('yeaa'); 
    } 

} //end class 

var validater = new form_validate(); 
+0

華麗に、私は間違った問題に焦点を当てました。ありがとう – David

関連する問題