如果另一个 div 有特定文本,则将 class 添加到 div

Add class to a div if another div has specific text

如果另一个 div .textdiv 有特定文本 [mytext],请将 class 添加到 div .thisdiv。下面的示例:

<div class="textdiv">
  <div class="here">
  [mytext]
 </div>
</div>

然后添加class mytext:

<div class="thisdiv mytext"> </div> /*Add New class .mytext*/

我的意思是,如果只有 <div class="textdiv"> 有文本 [mytext],则将 class 添加到 .thisdiv,这意味着 [ ] 符号很重要。

JS/Jquery 如何做到这一点?

您可以在选择器中使用 contains() ,但这不是完全匹配,它可以匹配元素中的部分文本。又名 "foo" 将匹配 "foo" 或 "food"

//$('.textdiv:contains("\[mytext\]")').addClass("mytext");
if($('.textdiv:contains("\[mytext\]")').length) {
    $(".thisdiv").addClass("mytext");
}
.mytext { background-color: yellow; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="textdiv">
  <div class="here">
  [mytext]
 </div>
</div>
<div class="thisdiv">FOO</div>

如果我理解正确的话。

function addTextClass(text,tclass){
  if(typeof text == "undefined") return;
  if(typeof tclass == "undefined") tclass=text; //Set class to the same as text if class is not specified.
  $('.textdiv').each(function(){
   if($(this).html().indexOf(text) > 0 )
      $('.thisdiv').addClass(class);
  });
}

你可以这样称呼它:

addTextClass('mytext');

addTextClass('MyText','MyClass');

示例:http://jsfiddle.net/3fyxdjk3/3/