0

我想获得 div id。在 div 中,如果标签包含 textToSearch,我想隐藏它。这该怎么做?

我也想在页面加载之前运行这个脚本。我不想看到页面的通行证。

这是我的代码:

<div class="main">
  <div class="content">
     <div class="whitebox">
            <div class="content">
                <div id="t512848" class="entry0">
                     <a>test</a>
                </div>
                <div id="t512849" class="entry0">
                     <a>galatasaray!</a>
                </div>
            </div>
     </div>
  </div>
</div>

用户脚本...

function main($) {
    textToSearch = "test";
    $(".content").children().each(function(n, i) {
    var id = this.id;
    $('div.entry0').each(function(index){
        var that = this;
        $(this).find("a:contains('"+textToSearch+"')").each(function(index) {               
            //$(#id).hide();
            console.log(this);
        });
    }); 
   });
}

addJQuery(main);
4

3 回答 3

3

不需要使用each方法,你可以使用has方法并隐藏div:

将匹配元素集减少为具有与选择器或 DOM 元素匹配的后代的元素。

$('.entry0').has("a:contains('"+textToSearch+"')").hide()
于 2012-11-19T20:04:14.037 回答
1

试试这个:

function main($) {
    textToSearch = "test";

    $(".content").children().each(function(n, i) {
        var id = this.id;
        $('div.entry0').each(function(index){
            var that = this;
            $(this).find("a:contains('"+textToSearch+"')").each(function(index, element) {               
                $(element).hide();
            });
        });
    });
于 2012-11-19T20:04:11.647 回答
1

此示例将获取所有具有匹配文本的锚标记的父 div 的 id。我还包含了一个 jsfiddle 示例的链接。

HTML

<div id="d1" class="entry0">
    <a>test</a>
</div>
<div id="d2" class="entry0">
    <a>test1</a>
</div>
<div id="d3" class="entry0">
    <a>test</a>
</div>

JS

textToSearch = "test";

$(".entry0").each(function(index) {
    $(this).find("a").each(function(index) {
        if ($(this).text() == textToSearch) {
            alert($(this).parent().prop("id"));
        }
    });
});​

jsfiddle

编辑

哦,我不知道有。查看其他答案并使用 has ,您就有了赢家。:)

于 2012-11-19T20:05:07.310 回答