2014-09-24 49 views
3

我没有粘贴在这里所有的div内容太长发现里面的div的div文字

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

我已经试过这

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

那么问题是什么?告诉我们你的html代码,否则我们很难帮你。 – 2014-09-24 12:21:48

+0

我们不知道这个代码有什么问题,您期望什么,以及有关的HTML代码是什么。 – enguerranws 2014-09-24 12:23:23

+0

请记住,除非您正确设置问题的格式,否则html元素将不会以明文显示! – Spokey 2014-09-24 12:25:27

回答

8

您可以使用:contains()

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

或者在您编辑您的OP后:

$("#Calendar > div > div:contains('DEMO')").text("");
<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>

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

$("#Calendar > div > div") 
 
    .filter(function(index) { 
 
    return $(this).text() == "DEMO"; 
 
    }).text("");
<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>

+0

'contains'不会给出完全匹配,它会像'indexOf'函数一样行事。根据OP,他正在寻找完全匹配。 – 2014-09-24 12:26:15

+0

检查更新答案。 – 2014-09-24 12:33:17

+1

+1的确切解决方案:) – 2014-09-24 12:39:05

1

div包含文本DEMO是ID为calendar_monthdiv不是直接孩子。在您的HTML children()将只返回第一个div。

使用find()

尝试:

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

DEMO

或者另一种方式(不推荐,但刚刚发布的逻辑),这种特定的标记是用

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