2010-04-21 36 views
2

我有多於一個div 具有相同的id,但其中一個具有diplay ='block' 等人擁有display = '沒有'。如何刪除具有相同id的div,但在JAVASCRIPT中顯示='block'和display ='none'

我想刪除所有有display ='none'的div。

請告訴最簡單的方法。

+6

不要爲元素使用相同的ID,請改用'class'。 – Sarfraz 2010-04-21 13:15:15

+5

您不能在頁面上使用給定ID的多個元素。在嘗試使用JS處理頁面之前解決這個問題。 – Quentin 2010-04-21 13:15:17

+0

爲什麼?他們隱藏起來。他們不傷害任何人。:-) – amphetamachine 2010-04-21 13:25:16

回答

6

與文檔中的多個元素具有相同的id是違反W3標準的。

改爲使用類名稱。不幸的是,沒有JavaScript函數通過類名來獲取元素。恐怕你將不得不遍歷所有div元素(使用getelementsbytagname),然後找出必要的div。

但是,如果您使用的是jQuery,您可以使用它的選擇器並按類名獲取元素並遍歷它。

$('.classname').each(function(index) { 
    //check if display is none and delete it 
    }); 
+4

不僅僅是W3C標準,而且還針對XHTML 1.1 doctype定義(現在我認爲它是W3C標準)。 – amphetamachine 2010-04-21 13:26:12

2

任何html元素ID屬性都必須是唯一的。更多關於W3Schools.com。你應該重寫你的html代碼來使用類而不是id。

1

第一個ID應該是唯一的整個文件,在文件中重複的ID是錯誤的做法。
關於刪除具有相同樣式的元素,如果您可以將樣式保留在CSS類中,那麼最好創建兩個類一個隱藏和其他顯示,然後使用jQuery從選擇器中選擇這些元素並將其刪除,例如

$(".hidden").remove(); 

但是,如果它是內聯的,你應該選擇元素並循環遍歷它們,看看誰有style = none將其刪除。 如: 讓我們說你要控制有統一的階級,而不是重複ID的元素,可以說「MyDivs」
jQuery中

$(".MyDivs").each(
    function(){ 
    if($(this).css("display") == "none") 
    { 
    $(this).remove(); 
    } 
} 
) 

希望這有助於

4

你可以做到這一點一行jQuery代碼,如果你想用它去:

$("div.the_div:hidden").remove(); 

這將消除由於被隱藏JQuery的隱迭代display:none

確保你包上面的代碼行中的jQuery 準備方法,只要DOM準備好觸發的所有div。所以就變成:

$(function(){ 
    $("div.the_div:hidden").remove(); 
}); 

注:給你申報單之類的the_div第一。

+1

我在這裏發佈了答案,但我會給你我的投票,你的更好 – Kronass 2010-04-21 13:28:17

+0

@Kronass:謝謝你......... :) – Sarfraz 2010-04-21 13:28:58

相關問題