2012-04-16 13 views
0

jQueryを使用して< p>タグ内のコンテンツを取得することができます。だから私は各プレイヤーの名前でJava変数を持つことができます。 jqueryコードは、プレーヤー名の代わりにplayerN1を空の文字列として設定します。私はなぜテキスト()がプレーヤー名(< p>タグ内のもの)をつかんでいないのだろうと思っていましたか?jqueryを使用してDOMからテキストを取得しますか?

<!-- HTML --> 
<div class="match1"> 
    <div id="m1.p1" class="col3 first last bracket_player1"> 
    <p class="name">Player1 Name</p> 
    </div> 
    <div id="m1.p2" class="col3 first last bracket_player2"> 
    <p class="name">Player2 Name</p></div> 
    </div> 
</div> 
<div class="match2"> 
    <div id="m2.p1" class="col3 first last bracket_player1"> 
    <p class="name">Player1 Name</p> 
    </div> 
    <div id="m2.p2" class="col3 first last bracket_player2"> 
    <p class="name">Player2 Name</p></div> 
    </div> 
</div> 

 

// The jQuery 
for (i = 0; i < 7; i++) 
{ 
    var match = "m" + i; 
    var elementID = "#"+match+".p1 "+"p"; 
    var playerN1 = $(elementID).text(); 
    console.log(elementID); 
    console.log(playerN1); 
} 
+0

IDに '.'を付けることはできません。 – Mathletics

+2

@Mathletics: '.'は有効なID文字ですが、セレクタでエスケープする必要があります。編集:[@ロケットの答え](http://stackoverflow.com/a/10181194/1106925)に示すように。 –

+0

@Mathletics:技術的に、あなたはできる:http://stackoverflow.com/a/79022しかし、私はそれを提案しません。それについては –

答えて

6

それはIDであるため.のです。 #m1.p1ID=m1 AND class=p1と解釈されます。 .with 2 \s)のいずれかをエスケープする必要があります。

var elementID = "#"+match+"\\.p1 "+"p"; 

または[id=""] selectorを使用してください。

var elementID = "[id='"+match+".p1'] "+"p"; 
+0

ええ、私は問題を引き起こすかもしれないと心配していました。 IDセレクタにリンクを送信していただきありがとうございます。これは初めてのjQueryの使用です。 – LF4

2

なぜあなたはちょうどこのようにそれらをつかんされていません。

$('p.name').each(function() { 
    console.log($(this).text()); 
});​ 
+0

私はマッチの行方を保つ必要があります。なぜなら、私はちょうど.nameのおかげでそれをつかむことができませんでした。 – LF4

2

あなたが代わりにtext()html()を使用するように試みることができるが、私は問題がある気がしますIDには.が含まれています。私はそれがIDの有効な文字であるとは確信していません。クラス「名前」で、各要素の値を取得するには

2

あなたはでしょうそれらを単にループ:

$('.name').each(function(){ 
    var thisPlayer = this.text(); 
    console.log(thisPlayer); 
}); 
関連する問題