使用jquery从DOM中获取文本?

时间:2012-04-16 20:22:31

标签: jquery dom

我想获得< p>使用jQuery标记。所以我可以为每个玩家的名字添加一个Java变量。 jquery代码将playerN1设置为空字符串而不是播放器名称。我想知道为什么text()没有抓住玩家的名字(< p>标签中的内容)?

<!-- 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);
}

4 个答案:

答案 0 :(得分:6)

这是因为ID中的.#m1.p1被解释为ID=m1 AND class=p1。您需要转义.with 2 \s)。

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

或使用[id=""] selector

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

答案 1 :(得分:2)

你为什么不这样抓住他们:

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

答案 2 :(得分:2)

您可以尝试使用html()代替text(),但我感觉问题出在ID中的.。我不确定这是一个有效的ID字符。

答案 3 :(得分:2)

要使用类'name'获取每个元素的值,您只需遍历它们:

$('.name').each(function(){
    var thisPlayer = this.text();
    console.log(thisPlayer);
});