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

时间:2016-03-19 14:44:08

标签: javascript jquery html text addclass

如果另一个div .thisdiv具有特定文字.textdiv,则将该课程添加到div [mytext]。示例如下:

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

然后添加课程mytext

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

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

JS / Jquery如何做到这一点?

2 个答案:

答案 0 :(得分:3)

您可以在选择器中使用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>

答案 1 :(得分:1)

如果我正确理解你的问题。

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/