2015-11-20 8 views
6

jQueryの.clickメソッドでJavascriptコンストラクタメソッドを使用する方法を理解できません。私は、ボタンの機能をコンストラクタに基づいて動的に変更するようにしようとしています。ここに設定があります:どのようにjQueryステートメントでJavascriptコンストラクターメソッドを使用しますか?

<button onclick=""> 
</button> 

は、別のボタンに応じて変更するメソッドを呼び出す必要があります。以下は私の壊れたコードです:私は$(「#UPARROW」)を取得する方法を見つけ出すことはできません

function GloveMode (name , array) { 

     this.colorArray = array; 

     this.displaySettings = function(){ 

      //Title 
      $("#displayTitle").text(this.name); 
      //Display Color Set 
      $("#displayColors").empty(); 


      //Totally Broken 
      $("#upArrow").click(function(){ 

       addColor(); 

      }); 

     }; 

     this.addColor = function(){ 

      console.log(this.colorArray.length); 

     }; 
    }; 

)(正しくthis.colorArrayを呼び出すために、またはthis.addColorを呼び出す方法)(クリックしてください.click()メソッドで!助けてください。

+1

var self = this; self.addColor(){...} – Enjoyted

+0

これは、JavaScriptのプロトタイプの面が活躍する場所です。理論的には、 'GloveMode'がそれらのプロパティにアクセスするためのプロパティとメソッド(該当する場合)を含むエンティティであることを望みます。しかし、グローバルなクリックハンドラは含まれてはいけません。たとえば、クリックハンドラがあなたのnameプロパティにアクセスできるようにするには、 'GloveMode.name'を使ってプロパティにアクセスし、それをクリックハンドラに返します。 – War10ck

答えて

4

あなたの問題は、「これ」は各機能体で異なることを意味します。したがって、必要な「this」を変数に保存します。 "自己"とそれを使用します。

function GloveMode (name , array) 
{ 
    var self = this; 
    this.colorArray = array; 
    this.displaySettings = function() 
    { 
     //Title 
     $("#displayTitle").text(this.name); 
     //Display Color Set 

     $("#displayColors").empty(); 

     //Totally Broken 
     $("#upArrow").click(function() 
     { 
     self.addColor(); 
     }); 

    }; 

    this.addColor = function() 
    { 
     console.log(self.colorArray.length); 
    }; 
}; 
+0

ありがとうございます。私はなぜこの変数を表す変数がここで使われる必要があるのか​​理解できません。 –

+0

メンバ変数 'this.addColor'で表される関数を名前なしで定義したため(匿名関数宣言)、だから、この関数はメンバ変数 'this.addColor'だけで参照することができます。この関数に 'function addClass()...'のような名前を付けると、コード例のように関数にアクセスできます。 –

関連する問題