4

我正在尝试使用 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() 函数,但我不确定如何使用其中的内容选择元素。

任何人都可以帮忙吗?

4

6 回答 6

5

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

于 2013-06-06T15:33:09.653 回答
2

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

代码

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();
});

希望能帮助到你。

于 2013-06-06T15:32:37.050 回答
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:)之前添加评论

于 2013-06-06T17:28:51.507 回答
1

您可以像这样选择它们:

$('.title').each(function() {
    if (($(this).text() == 'This is my test label') || ($(this).text() == 'Yet another test label')) {
      $(this).hide();
    }
});
于 2013-06-06T15:33:11.260 回答
1

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

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

可能有用!

于 2013-12-03T05:13:35.177 回答
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();
}
于 2018-07-01T12:41:56.127 回答