2011-07-25 78 views
1

考慮到我的網頁,我需要遞歸搜索所有的孩子,直到我找到給定的文本字符串,因爲它的內容,然後刪除元素一個div一個div標籤的ID的DIV ...遞歸搜索在JavaScript

function removewhereTextIs(text){ 
    // ??? 
} 

我一直在玩使用jquery的這一點,但我似乎無法得到它的工作...

var divs = $('#MainContent_ui_calAvailability').find('div').get() 
for (div in divs) { 
    alert(div.innerHtml); 
} 

我甚至認爲每個功能...

var divs = $('#MainContent_ui_calAvailability').find('div').get().each(
    function() { function() { if ($(this).innerText == 'TEXT') { $(this).parent.removeChild(this); } } 
); 

我想這是一個UI程序員和BLL程序員之間的區別......

所以......

任何天才在那裏想幫助我嗎?

編輯:

感謝幫助傢伙......這些都不似乎工作...我prety相信他們應該工作,但...有點奇怪......實際的標記看起來像這...

<DIV style="..." id="MainContent_ui_calAvailability"> 
<DIV style="..."> 
    <DIV style="..." class=""> 
    <DIV style="..."> 

    </DIV> 
    <DIV style="..."> 
    TEST 
    </DIV> 
    </DIV> 
    ... 
</DIV> 

做這些工作,爲你們的???

+0

似乎theres很多js嚮導在這裏...我會回來肯定:)看這個空間大聲笑 – War

回答

3
$('#MainContent_ui_calAvailability div').each(function() { 
    if ($(this).text() == 'TEXT') { $(this).remove(); } 
}); 

的幾點關於你的函數:

1)你可以組合選擇呼叫並查找()調用到一個選擇。

2)get()會返回dom元素,而不是一個jQuery對象,所以你不能在它上面調用.each()。

3)您在每個回調中聲明瞭一個函數,但並未真正執行它。

+0

啊得到它...需要包裝這個(文檔).ready( function(){/ * your code * /});謝謝dennis – War

1

我想看看這樣做:

$('#MainContent_ui_calAvailability div').each(function (index, item) { 
    if ($(item).text() == "TEXT") 
{ 
    $(item).remove(); 
} 

}); 
+0

thx理查德...另一個很好的解決方案:) – War

3

如果允許部分而不是完全匹配的,你可以使用contains選擇:

$('#MainContent_ui_calAvailability div:contains("TEXT")').remove(); 
+1

如果你想做部分匹配,你可以通過直接調用remove()而不是將它放在each()中來進一步清理它。 – Dennis

+0

謝謝你,你是對的 – Alp

+0

我會爲此而去的...但我寧願在這種情況下去具體...我真的很喜歡這個解決方案+1 – War

2

無需每次一個,怎麼這樣呢?

$('#MainContent_ui_calAvailability div:contains(TEXT)').remove(); 

查看jsFiddle

+1

哈哈......謝謝宙斯你得出的結論是alp ...再次非常有幫助:) +1 – War