jQuery,找到没有id而没有class但带有文本的子div

时间:2014-01-18 06:43:27

标签: javascript php jquery html

我有以下代码:

<div>
    <div> 
        <div> 
            <div>
                <div> I am here </div> 
                <div> Another div</div>
                <div> Find me I am here </div>
            </div> 
       </div>
    </div>
</div>

我试图隐藏包含文字的div“找到我,我在这里

 <script language="t" type="text/javascript">
$(document).ready(function(e) {       
    $("div:contains('Find me i am here')").css("display","none");
});
</script>

但上面的代码对我不起作用? 请帮忙。 提前谢谢

4 个答案:

答案 0 :(得分:4)

您还可以使用if条件和.each()方法进行操作,甚至比使用:contains()更精确,因为:contains()会查找该文本,即使它是使用另一个字符串,这样甚至可以匹配

之类的东西
<div>Hey I don't want to hide this Find me i am here</div>

Ummm you don't need that right? 小提琴:@Arun P Johny

所以你可以参考下面的解决方案..

$(document).ready(function(e) {
    $('div').each(function() {
        if($(this).html() == ' Find me i am here ') {
            $(this).css({'display': 'none'});
        }
    });
});

Demo


注意:我在if条件中的字符串之前和之后有一个空格用于比较,因为它很重要,如果你想让它不那么严格,那么使用.trim()来切割从字符串的开头和结尾开始的空格。


此外,如果您要定位具有该文字但具有 classid属性的元素,请使用下面的代码

$(document).ready(function(e) {
    $('div:not([class]):not([id]').each(function() { 
        //Select only div which doesn't have class or id attributes
        if($(this).html() == ' Find me i am here ') {
            $(this).css({'display': 'none'});
        }
    });
});

Demo 2

答案 1 :(得分:2)

因为它也将返回所有祖先div,你需要从:contains

返回的集合中过滤掉带有子节点的div
$("div:contains('Find me i am here'):not(:has(*))").hide();

演示:Fiddle

答案 2 :(得分:1)

您可以向.html()方法本身添加回调函数

data在div中包含html内容,然后将其与您搜索的文本进行比较。

$(document).ready(function(e) {     
   $('div').html(function(t,data) {
       if(data ===' Find me i am here ')
        $(this).css("display","none");
   });
});

这是小提琴http://jsfiddle.net/YSkE9/7/

答案 3 :(得分:0)

您可以使用:contains获取元素,请参阅以下代码。

$('div:contains("test")').hide();