我有一个HTML
<div class="common">
<p class="special">
<p class="child">test1</p>
</p>
<p class="special">
<p class="child">test2</p>
</p></div>
如你所见,我有两个相同风格但内容不同的段落,我只想更改内容包含&#34; test1&#34;的段落样式, 写了这样的东西
$(".common").each(function () {
if ($(this).find('.special').find('.child').text() == "test1")
{
$(this).find('.special').find('.child').css('background','red');
}});
但是样式适用于两个段落,是否有任何解决方案可以在javascript / jquery中解决这个问题
答案 0 :(得分:1)
您的HTML无效 - p
元素不能包含其他p
元素
<div class="common">
<div class="special">
<p class="child">test1</p>
</div>
<div class="special">
<p class="child">test2</p>
</div>
</div>
然后
$(".common .special .child").each(function () {
if ($(this).text() == "test1") {
$(this).css('background', 'red');
}
});
演示:Fiddle
您的代码会找到第一个.special .child
元素inside each
。common and if its text matches the test case then it applies the styles to all
。special .child elements within the
。common`
答案 1 :(得分:0)
您可以使用过滤器
$(".common > .special > .child").filter(function(){
return $(this).text() == "test1"
}).css('background', 'red');
答案 2 :(得分:0)
试试这个:
$(".common .child").each(function () {
if ($(this).text() == "test1"){$(this).css('background','red');}});
<强> Working Demo 强>