替换基于类的div中的段落文本

时间:2012-06-23 00:28:48

标签: jquery replace

我正在尝试使用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>

谢谢你的期待。初学者总数。

4 个答案:

答案 0 :(得分:3)

我认为你想要的是:

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

这将使每个div的段落文本等于两个字母的类名

答案 1 :(得分:1)

您必须找到合适的.topic而不是所有.topic

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

答案 2 :(得分:1)

确保您只选择要更改的div:

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

答案 3 :(得分: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)。