2012-04-16 69 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 2012-04-16 20:26:55

+2

@Mathletics:'.'是一個有效的ID字符,但你需要在選擇器中將其轉義。編輯:如[@火箭的答案](http://stackoverflow.com/a/10181194/1106925)所示。 – 2012-04-16 20:28:39

+0

@Mathletics:從技術上講,你可以:http://stackoverflow.com/a/79022然而,我不會建議它。 – 2012-04-16 20:29:30

回答

6

這是因爲標識的.的。 #m1.p1被解釋爲ID=m1 AND class=p1。您需要轉義.with 2 \s)。

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

或使用[id=""] selector

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

是的,我擔心可能會導致問題。感謝您發送鏈接到ID選擇器。這是我第一次使用jQuery。 – LF4 2012-04-16 22:13:30

2

你爲什麼不只是抓住他們這樣的:

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

我還需要保留一些比賽,這就是爲什麼我不能僅僅依靠.name感謝而已。 – LF4 2012-04-16 22:15:09

2

你可以嘗試使用html(),而不是text()但我有一種感覺問題與ID中的.。我不確定這是一個ID的有效字符。

2

要通過他們搶用類「名稱」你只是循環的每個元素的值:

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