按内容查找html元素并使用jQuery隐藏

时间:2013-06-06 15:28:15

标签: jquery find hide

我正在尝试使用jquery在某些HTML中查找某些元素,我想查找并隐藏包含标签文本'这是我的测试标签'和'是的另一个测试标签

的列表ID
<ul id="mylist" class="top_level_list">
<li id="field66" class="myfield">
    <div class="field_icons">
        <div class="title">This is my title</div>
    </div>
    <label class="my_label" for="input71">This is my test label</label>
</li>
<li id="field20" class="myfield">
    <div class="field_icons">
        <div class="title">This another test title</div>
    </div>
    <label class="my_label" for="input71">Yet another test label</label>
</li>

我找到了jQuery .hide函数以及.find()函数,但我不确定如何使用其中的内容选择元素。

有人可以帮忙吗?

6 个答案:

答案 0 :(得分:5)

这是一个稍微简单的解决方案。 $(".my_label:contains('This is my test label')").hide();。你可以在这里看到它:http://jsfiddle.net/kPxTw/

答案 1 :(得分:2)

看看这里:http://jsfiddle.net/yPFgu/1/

<强> CODE

var labelsToHide = ["This is my test label", "Another one"];

$("li").each(function () {
    var txt = $(this).find("label").text();
    if (labelsToHide.indexOf(txt) > -1 )
        $(this).hide();
});

希望它有所帮助。

答案 2 :(得分:2)

在我的个人档案中,我有一个能够做你想要的原型。我可以和你分享。在调用代码之前,只需在文档中添加一些:

$.fn.filterText = function(text, caseSensitive){
    var returnedObj = $(),
        caseSensitive = caseSensitive || false,
        $this = $(this);
    if(typeof text == 'object'){
        for(var i = 0; i < text.length; i++){
            if(typeof text[i] == 'string'){
                console.log(i);
                returnedObj = returnedObj.add($this.filter(function(){
                    var search = caseSensitive ? text[i] : new RegExp(text[i], 'i')
                    return $(this).text().search(search) != -1;
                }))

            }
        }
    }else if(typeof text == 'string'){
        returnedObj = returnedObj.add($this.filter(function(){
            var search = caseSensitive ? text : new RegExp(text, 'i')
            return $(this).text().search(search) != -1;
        }))
    }
    return returnedObj;
}

然后,您将能够隐藏父线:

$('label').filterText(['This is my test label', 'Yet another test label'], true /*case sensitive?*/)
          .parent()
          .hide()

小提琴:http://jsfiddle.net/yKprx/

也许只需在$.fn //Author @Karl-André Gagnon:)

之前添加评论

答案 3 :(得分:1)

您可以这样选择:

$('.title').each(function() {
    if (($(this).text() == 'This is my test label') || ($(this).text() == 'Yet another test label')) {
      $(this).hide();
    }
});

答案 4 :(得分:1)

Tim Wasson的答案很棒 - 我发现将他的解决方案与.closest()方法配对使得隐藏整个父容器变得非常容易。我使用他的解决方案找到某个链接“促销”,然后杀死持有它的整个部分和按钮样式等:

$("a:contains('Promotions')").closest('section').hide();

可能有用!

答案 5 :(得分:0)

在页面加载时隐藏元素时,添加window.onload很有用。

<li>Your Text</li>
window.onload = function() {
    jQuery("li:contains('Your Text')").hide();
}

如果在<a>元素内链接元素(<li>),则可以使用以下代码将文本隐藏在<a>元素内:

<li><a href="yourLink">Your Text</a></li>
window.onload = function() {
    jQuery("li a:contains('Your Text')").hide();
}