2017-01-29 4 views
0

は、私は以下のクラスを持っている:あなたが見ることができるように、私が記入しようとしている「この」の代わりにオブジェクトの関数の内部で何かを参照する(jQueryの)

function courseOversight() { 
 
    this.courseBlocks = []; // Stores the courseblocks on the page 
 
    this.getCourseBlocks = function() { 
 
    $(".course-block").each(function(){ 
 
     var block = new courseBlock(); 
 
     this.courseBlocks.push(block); 
 
    }); 
 
    } 
 
}

オブジェクトのcourseBlocks配列とページ上のcourseBlocks。しかし、each()ループでは、 'this'は私が現在追加しているcourse-blockを指し、courseOversightオブジェクトには該当しません。現在利用できない 'this'キーワードを使用せずにcourseOversightsコースブロック配列にアクセスするにはどうすればよいですか?ありがとう!

+0

私は、getcourseBlocksのfunctでローカルのcourseBlocks配列を作成することで動作させることができたことを知りましたその後、courseOversightのコースブロックをその配列に設定します。それはそれを行うの '正しい'方法ですか? –

+0

問題が解決したら、それを受け入れて質問を終了してください。 – ppasler

答えて

0

あなたは以下の

function courseOversight() { 
var _this = this; //Assign 'this' context to a new var 
this.courseBlocks = []; // Stores the courseblocks on the page 
this.getCourseBlocks = function() { 
    $(".course-block").each(function(){ 
     var block = new courseBlock(); 
     // Now you can call the following like this. 
     // _this.courseBlocks.push(block); 
     this.courseBlocks.push(block); 
    }); 
} 
} 
+0

これは本当に感謝しています、ありがとう! –

0

のように各を入力する前に、別の変数(PE self

function courseBlock(){ 
 
} 
 

 
function courseOversight() { 
 
    var self = this; 
 
    self.courseBlocks = []; // Stores the courseblocks on the page 
 
    self.getCourseBlocks = function() { 
 
    $(".course-block").each(function(){ 
 
     var block = new courseBlock(); 
 
     self.courseBlocks.push(block); 
 
    }); 
 
    } 
 
    self.getCourseBlocks(); 
 
    console.log("Tests: ", self.courseBlocks); 
 
} 
 
courseOversight();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div> 
 
    <div class="course-block">Block 1</div> 
 
    <div class="course-block">Block 2</div> 
 
    <div class="course-block">Block 3</div> 
 
</div>
thisを保存することが変数に「これ」を割り当てることによってこの問題を解決することができます

関連する問題