2016-04-13 6 views
0

私はそれぞれのクラス名を取得しようとしていますtdし、別のクラスをそれぞれtdに追加します。例:現在のクラスはclass = "X-marker"で、別のクラスbgreenを追加したいと思います。class = "X-marker bgreen"です。jQueryを使用してオブジェクトプロパティの配列リストにクラス名を追加する方法は?

eachのメソッドを使用して、それぞれtdのクラス名を取得し、次にそれぞれattrを使用して設定しましたが、動作しません。私はエラーはありませんが、期待どおりに動作していません。

オブジェクトはwinInfoと呼ばれ、配列変数があるさ:winInfo.play = winArray[i];

var winInfo = checkWin(); 
if (winInfo.win) { 
    currentClass = $(winInfo.play).each(function() { 
     $(this).attr('class'); 
    }); 

    $(winInfo.play).each(function() { 
     $(this).attr('class', currentClass + ' bgreen'); 
    }); 
} 

答えて

2

あなたがaddClass()を探しているようですね。 @Hatchet、明確にそれを行うための最も簡単な方法ですaddClass方法で述べたように

$(winInfo.play).addClass('bgreen'); 
+0

つまり、配列リストに 'each'メソッドを使う必要はありませんか? –

+0

@MaihanNijatあなたが正しくあなたを理解しているなら、あなたはすべきではありません。 Docsは言う: '指定されたクラスを、一致する要素のセットの各要素に追加します。 ' – Hatchet

+0

あなたの現在の設定currentClassは本当に私にとって意味をなさないものです。あなたの投稿からは、TD要素のリストをループしてクラスを追加しようとしているようです。なぜあなたが$( 'X-marker')をしていないのかは分かりません。それぞれ(function {){(this).addClass( 'bgreen');});問題をより詳細に説明したり、jsfiddleを提供しようとする可能性があります。 – user3333134

1

は、次のようになります。 しかし、eachの仕組みが誤解されているようですので、eachを使用し、addClassを使用してこれを行う方法は次のとおりです。

私は、winInfo.playが適切なDOMセレクタ(例えば、".class-name p")であると仮定しています。

var winInfo = checkWin(); 
if (winInfo.win) { 
    // `each` is just a helper that will call the provided function 
    // for each of the object selected by jQuery (like a loop). 
    // It does not return any value. 
    $(winInfo.play).each(function() { 
     var currentClass = $(this).attr('class'); 
     $(this).attr('class', currentClass + ' bgreen'); 
    }); 
} 

これは、you might not need jQueryです。これは、プレーンjでの処理方法です。

var winInfo = checkWin(); 
if (winInfo.win) { 
    // if winInfo.play is not a selector but a list of dom elements, 
    // just remove document.querySelectorAll. 
    for(var el of document.querySelectorAll(winInfo.play)){ 
    el.classList.add('bggreen'); 
    } 
} 
関連する問題