2012-06-23 95 views
1

我想使用jQuery來改變基於它所在的div類的段落文本。基於類替換段內的文本

我希望數組中的每個類名都替換其各自div中的p文本。現在我只是得到p文本的最後一個div的類名。

<div class="ph player">PHILIPPINES<p class="topic">Test topic</p></div> 
<div class="sl player">SOLOMON ISLANDS<p class="topic">Test topic</p></div> 
<div class="fi player">FIJI<p class="topic">Test topic</p></div> 
<div class="sm player">SAMOA<p class="topic">Test topic</p></div> 

<script> 
var divArr = ["ph", "sl", "fi", "sm"]; 
$.each(divArr, function(index, value) { 
    $(".topic").text(this); 
}); 
</script> 

感謝您的期待。這裏總共有初學者。

+0

謝謝!我很感激幫助。 –

+0

接受答案。歡迎來到SO。 –

回答

1

你必須找到合適的.topic不是所有.topic S:

var divArr = ["ph", "sl", "fi", "sm"]; 
$.each(divArr, function(index, value) { 
    $('.' + value).find(".topic").text(this); 
}); 
+0

Mahalo!我很感激幫助。 –

1

確保你只選擇DIV要更改:

var divArr = ["ph", "sl", "fi", "sm"]; 
$.each(divArr, function(index, value) { 
    $("div." + value + " .topic").text(value); 
}); 
+0

Downvoter想解釋一下嗎? – Flash

+0

我的壞,downvote不見了:) @Andrew,現在upvoted。我讀錯了你的代碼。 – Cranio

0
$.each(divArr, function (i,e) { 
    $("."+this).find("p.topic").text(this); 
}); 

的關鍵是正確使用選擇器。

this」 取值爲 「PH」, 「SL」 ......

所以"."+this將在JQuery中/ CSS語法識別類(.PH,.sl ...)

$("."+this)因此選擇正確的div,其中我們將罰款p標籤與類.topic並替換文本(再次,this)。

3

我想你想要的是:

$.each(divArr,function(i,val) { 
    $('.'+val+' p.topic').text(val); 
}); 

這將使每個段落文本的div等於兩個字母的類名

+0

正確,很好的速記形式。 Upvoting。 – Cranio