Jquery 查找具有特定文本的div的子级

Jquery 查找具有特定文本的div的子级,jquery,css,Jquery,Css,我有一个盒子,一个div,里面有三个孩子,显示为三个不同的单词 --------- | Red | Green | Blue -------- 无论如何,我想把红色的文本改成红色。但是,我不知道如何访问这个特定的孩子。我试过 $("#target :contains("Red")").children().css("color", "red"); 但是,这会将它们全部更改为红色。我显然没有正确使用contains。这会更改包含颜色的div的颜色。我看不出你用html做了什么,所以我不能

我有一个盒子,一个div,里面有三个孩子,显示为三个不同的单词

---------
|  Red
|  Green
|  Blue
--------
无论如何,我想把红色的文本改成红色。但是,我不知道如何访问这个特定的孩子。我试过

$("#target :contains("Red")").children().css("color", "red");

但是,这会将它们全部更改为红色。我显然没有正确使用
contains

这会更改包含颜色的div的颜色。我看不出你用html做了什么,所以我不能告诉你你的代码出了什么问题


红色
绿色
蓝色
$('div:contains(“Red”)).css('color','Red');
$('div:contains(“Green”)).css('color','Green');
$('div:contains(“Blue”)).css('color','Blue');

这会更改包含颜色的div的颜色。我看不出你用html做了什么,所以我不能告诉你你的代码出了什么问题


红色
绿色
蓝色
$('div:contains(“Red”)).css('color','Red');
$('div:contains(“Green”)).css('color','Green');
$('div:contains(“Blue”)).css('color','Blue');

尝试css伪元素

#target > div:nth-child(1){color:red}
#target > div:nth-child(2){color:green}
#target > div:nth-child(3){color:blue}

jQuery解决方案

$( "#target div:contains('Red')" ).css( "color", "red" );
您需要引用包含特定文本的子div


尝试css伪元素

#target > div:nth-child(1){color:red}
#target > div:nth-child(2){color:green}
#target > div:nth-child(3){color:blue}

jQuery解决方案

$( "#target div:contains('Red')" ).css( "color", "red" );
您需要引用包含特定文本的子div

1)我想您的代码的主要问题是没有正确使用引号。请看下面的代码:

$("#target :contains("Red")")
不能将带引号的字符串嵌套在另一个被引号包围的字符串中。您应该使用撇号或引号

$("#target :contains('Red')")

<强> 2)< /强>第二件要考虑的是<> > >目标> <代码>和<代码>之间的空间:包含。如果您的HTML与此类似:

<div id="target">
    Red
    <span>This text will be read.</span>
    <span>This text will be read.</span>
</div>
但是如果您的HTML与此类似(请注意额外的div):

1)我想您的代码的主要问题是没有正确使用引号。请看下面的代码:

$("#target :contains("Red")")
不能将带引号的字符串嵌套在另一个被引号包围的字符串中。您应该使用撇号或引号

$("#target :contains('Red')")

<强> 2)< /强>第二件要考虑的是<> > >目标> <代码>和<代码>之间的空间:包含。如果您的HTML与此类似:

<div id="target">
    Red
    <span>This text will be read.</span>
    <span>This text will be read.</span>
</div>
但是如果您的HTML与此类似(请注意额外的div):


如果您想使用jQuery实现这一点。。。然后你必须拆分单词并用一些html代码替换它。。。我试着这么做。。。请检查下面的小提琴

HTML

<div id="target" style=" width: 155px; height: 150px; float: left; border: 1px solid rgb(119, 119, 119); margin: 10px; padding: 5px; background: rgb(204, 204, 204);">#target
  <br>
  <br>
  <span>
    red
    <br>
    blue
    <br>
    green
  </span>
</div>

<br>
<button class="change">
  Change
</button>
#目标


红色
蓝色
绿色
改变
JQUERY

$(document).ready(function() {
  $('.change').on('click', function() {
    var str = $('#target span').html();
    console.log(str);
    var words = str.split("<br>");
    var clr = ['red', 'blue', 'green'];
    var n = '';
    console.log(words);
    for (var i = 0; i <= words.length - 1; i++) {
      words[i] += " ";
      var m = words[i].replace(clr[i], '<br><span style=\'color:' + clr[i] + '\'>' + clr[i] + '</span>')
      n += m;

    }

    $('#target').children().remove();
    $('#target').append('<br>' + n);
  });
});
$(文档).ready(函数(){
$('.change')。在('click',function()上{
var str=$('#target span').html();
console.log(str);
var words=str.split(“
”); var clr=[“红色”、“蓝色”、“绿色”]; var n=''; 控制台日志(文字);
对于(var i=0;i如果您想使用jQuery进行此操作,那么您必须拆分单词并用一些html代码替换它…我尝试过这样做…请检查以下内容

HTML

<div id="target" style=" width: 155px; height: 150px; float: left; border: 1px solid rgb(119, 119, 119); margin: 10px; padding: 5px; background: rgb(204, 204, 204);">#target
  <br>
  <br>
  <span>
    red
    <br>
    blue
    <br>
    green
  </span>
</div>

<br>
<button class="change">
  Change
</button>
#目标


红色
蓝色
绿色
改变
JQUERY

$(document).ready(function() {
  $('.change').on('click', function() {
    var str = $('#target span').html();
    console.log(str);
    var words = str.split("<br>");
    var clr = ['red', 'blue', 'green'];
    var n = '';
    console.log(words);
    for (var i = 0; i <= words.length - 1; i++) {
      words[i] += " ";
      var m = words[i].replace(clr[i], '<br><span style=\'color:' + clr[i] + '\'>' + clr[i] + '</span>')
      n += m;

    }

    $('#target').children().remove();
    $('#target').append('<br>' + n);
  });
});
$(文档).ready(函数(){
$('.change')。在('click',function()上{
var str=$('#target span').html();
console.log(str);
var words=str.split(“
”); var clr=[“红色”、“蓝色”、“绿色”]; var n=''; 控制台日志(文字);

对于(var i=0;我也可以发布html部分?我实际上不能。这是我在网上发现的一个实践问题,我实际上不应该知道html是什么。网站的链接在这里…(所以人们不认为它是硬件)每种颜色都必须有一个不同的标签。这样的效果也适用于你可以发布html部分吗?我实际上不能。这是我在网上发现的一个实践问题,我实际上不应该知道html是什么。网站的链接在这里…(所以人们不认为它是硬件)每种颜色都有不同的标签。因此,这种效果将适用于它。不,你没有,因为它工作正常。看到这把小提琴。@BikasVaibhav这里是我测试它的地方,提供了一个解决方案,但我想知道如何在不替换HTMLB的情况下完成它,因为这个问题与你提出的问题完全不同。它是带有

标记的单个跨距。因此,由于它包含红色/蓝色/绿色的all,因此需要先取后取apply@BikasVaibhav如果不替换html,就没有办法做到这一点?比如使用过滤器过滤掉一个特定的单词?你必须用一些标记来包装每个单词。寻找它。如果你需要帮助,请告诉我,我会创建fiddleNo你没有,因为它工作正常。看看这个小提琴。@BikasVaibhav这里是我测试它的地方,提供了一个解决方案,但我想知道如何在不替换HTMLB的情况下完成它,因为这个问题与你所问的完全不同。它是一个带有

标记的单跨距。因此,因为它包含红色/蓝色/绿色好吧,首先,然后apply@BikasVaibhav如果不替换html,就没有办法做到这一点?比如使用过滤器过滤掉一个特定的单词?你必须用一些标记来包装每个单词。寻找它。如果你需要帮助,请告诉我,我会创建小提琴。他想根据里面的文本而不是元素来更改颜色t位置。他希望根据内部文本而不是元素位置进行颜色更改。要在该实践站点中使用,请复制粘贴以下代码…它可以使用JQUERY$(document).ready(function(){var str=$('#target span').html();console