2012-11-19 26 views
0

我想获得div id。在div中,如果标签包含textToSearch,我想隐藏它。这个怎么做?使用jQuery与用户脚本

另外我想在页面加载之前运行此脚本。我不想看到网页的通过。

这里是我的代码:

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

回答

3

没有必要使用each方法,你可以使用has方法并隐藏div:

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

$('.entry0').has("a:contains('"+textToSearch+"')").hide() 
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(); 
      }); 
     }); 
    }); 
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

编辑

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