2017-07-11 8 views
0

に基づいてdiv要素にクラスを追加しようとすると、私は次のように使用して、私の$ボードの親にdiv要素のシリーズを追加します。その割り当てられたjQueryのインデックス番号

var $board = $('<div id="board"></div>'); 
    var $row = $('<div class="row"></div>'); 
    var $cell = $('<div class="box stdBG"></div>') 
    var $aRow; 
    var $aCell; 
    for (var i=0; i < 17; i++){ 
     $aRow = $row.clone(); 
     $board.append($aRow); 
     for (var j =0; j <25; j++){ 
      $aCell = $cell.clone(); 
      $aRow.append($aCell); 
      if (i===8 && j==12){ 
       $aCell.removeClass('stdBG').addClass('marvin'); 
       indexI = i; 
       indexJ = j; 
      } 
     } 
    } 

これはうまく動作しますが、その後、私は追加しよう

indexJ += 1; 
    $('.row').eq(indexI).find('.cell').eq(indexJ).addClass('marvin'); 

「marvin」クラスを隣接するdivに割り当てると、エラーメッセージが表示されません。このルーキーは助けが必要です!

+0

indexJ + = 1;あなたのメインコードの...セクション '? –

+1

[最小、完全、および検証可能な例](https://stackoverflow.com/help/mcve)を提供してください –

+0

こんにちはMehdi、 "for"ループは呼び出された関数の全体です。 indexIとindexJはスクリプトファイルの先頭で初期化され、indexJ + = 1は上記の$( '。row')のすぐ上にあり、別の関数の一部です。私のindex.I/Jのconsole.logは私に正しい値を与えます。彼らはちょうど$( '行')行によって適用されていないようです – Cudderz

答えて

1

あなたの主な問題は、存在しない.cellクラスを探していることです。それは.boxだったはずです。

$(」行 ')は式(indexI).find(' を.cell ').EQ(indexJ).addClass(' マービン)。

私はこのスニペットを作ったのだが、正常に動作します:

var indexI = 0, 
 
    indexJ = 0; 
 

 
var $board = $('#board'); 
 
var $row = $('<div class="row"></div>'); 
 
var $cell = $('<div class="box stdBG"></div>'); 
 

 
for (var i = 0; i < 17; i++) { 
 
    var $aRow = $row.clone(); 
 
    $board.append($aRow); 
 
    for (var j = 0; j < 25; j++) { 
 
    var $aCell = $cell.clone(); 
 
    $aRow.append($aCell); 
 
    if (i === 8 && j === 12) { 
 
     $aCell.removeClass('stdBG').addClass('marvin'); 
 
     indexI = i; 
 
     indexJ = j; 
 
    } 
 
    } 
 
} 
 

 
indexJ += 1; 
 
$('.row').eq(indexI).find('.box').eq(indexJ).addClass('marvin');
div { 
 
    line-height: 0 
 
} 
 

 
.box { 
 
    width: 10px; 
 
    height: 10px; 
 
    display: inline-block; 
 
    border: solid 1px #fff 
 
} 
 

 
.stdBG { 
 
    background: grey 
 
} 
 

 
.marvin { 
 
    background: pink 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div id="board"></div>

+0

ありがとう、私は小さなテストケースを自分で打ち砕いて、セル: – Cudderz

+0

私の最初の投稿は何も愚かではありませんが、生きて学びません。もう一度ありがとう... – Cudderz

0

あなたの問題はここにある:

.find('.cell') 

代わりに.BOXしなければなりません
$('.row').eq(indexI).find('.box').eq(indexJ).addClass('marvin'); 

同じことが、私はどのセレクタが間違っている項目かを返すかどうかをチェックするためにブラウザの開発者ツールで時計を使用することをお勧め(ブラウザコンソールにエラーを)起こらない場合は次回 `の位置をある

+0

なぜ私のスニペットもコピーしないでください? J –

+0

答えを入力し始めたとき、あなたのアンガーはそこにいませんでした。単純に同じ考え。時間を確認する –

関連する問題