用文本在div中找到div

时间:2014-09-24 12:20:59

标签: javascript jquery

我没有在此处粘贴所有div内容,因为它太长了

<div id="calendar_month">
    <div>
        <div></div>
        <div>DEMO</div>
    </div>
</div>

我试过这个

 $("#calendar_month").children().each(function () {
     if ($(this).text() == "DEMO") {
         $(this).text("");
     }
 });

2 个答案:

答案 0 :(得分:8)

您可以使用:contains()

$( "#calendar_month div:contains('DEMO')" )

或者在您编辑OP之后:

&#13;
&#13;
$( "#Calendar > div > div:contains('DEMO')" ).text("");
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="Calendar">
    <div>
        <div>test</div>
        <div>DEMO</div>
    </div>
</div>
&#13;
&#13;
&#13;  

或者@BhushanKawadkar发表评论后,您可以使用.filter()

&#13;
&#13;
$( "#Calendar > div > div" )
  .filter(function( index ) {
    return $(this).text() == "DEMO";
  }).text("");
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="Calendar">
    <div>
        <div>test</div>
        <div>DEMO</div>
    </div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

包含文字DEMO的div不是ID为div的{​​{1}}的直接子女。在您的HTML中calendar_month将仅返回第一个div。

使用find()

尝试:

children()

DEMO

或者使用

以另一种方式(不推荐但只是发布逻辑)到这个特定的标记
$("#calendar_month").find('div').each(function () {
     if ($(this).text() == "DEMO") {
         $(this).text("");
     }
 });