2012-11-19 24 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

編輯

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