2010-12-01 107 views
0

我正在開發一個基於JavaScript的應用程序。避免在html元素中的ID

使用id來識別元素通常被認爲有點不好,因爲id是全局的,並且如果碰巧遇到了,它會立即陷入困境。

什麼是一些有效的方法來避免這種情況?無論您通常使用id還是有缺點,都可以使用使用類。請注意,我對CSS的一面不感興趣,只是javascript。

編輯:我想我得到了我的答案,但我們清楚,我不是在談論文檔對象中的重複項。我想構建一組可重用的組件。通常我會通過他們的ID訪問他們。

我沒有使用DOM生成html,有一個html模板,然後通過javacript'豐富'。當我想在同一頁面上重新使用組件時,問題就開始了。命名空間在這裏也無濟於事。所以即使我的元素在該組件的上下文中是「獨特的」,它們也不能保證在整個文檔中。

使用類可能是不好的做法,但還有什麼其他選擇?

回答

4

使用的ID,如果它是獨特的,用類,如果它的重複使用

使用的ID,它是不是「有點壞」

<div id="header"></div> 
<div id="content"></div> 
<div id="footer"></div> 

機會是的例子,這些都只會是在頁面上一次

使用類的實施例

<div class="floatleft"></div> 

<div class="bold"></div> 

<div class="center"></div> 

這些都是通用的d可以在多種情況下使用,即使在一起! <div class="floatleft bold center"></div>

1

使用的ID來標識元素被 通常被認爲是有點不好,因爲 ID是全球,它會立即 亂了,如果我碰巧有一個 碰撞。

我不認爲我同意這一點。一個id的整個點是(唯一)一個元素。是的,如果發生碰撞,可能會出現問題,這就是爲什麼您需要小心並確保您的ID是唯一的。像Sencha和Sproutcore這樣的JS框架可以爲你做到這一點。

使用類代替id是不好的。 CSS類的要點是能夠將一組樣式應用到類的所有元素。類旨在應用於多個元素。

+1

我既不..... – hunter 2010-12-01 18:48:11

+0

碰撞OP講的是具有屬性添加到`window`對象(全局變量)。 – user113716 2010-12-01 18:53:55

+0

@patrick我明白了。我關於小心ID的觀點仍然存在,對吧?並且使用ID來標識元素不被認爲是不好的,是嗎? – hvgotcodes 2010-12-01 18:56:39

1

只要你不指望它們是唯一的,你可以使用類。如果你確實期望元素是唯一的,你不應該害怕使用ID。

1

當你創建一個Javascript應用程序,你可以保存指針在DOM創建的元素,而無需通過ID來訪問它們:

var el = document.createElement('div'); 
document.body.appendChild(el); 

// now you can manipulate el as you want 
el.style.backgroundColor = ...; 
el.innerHTML = ...; 
0

我絕對不同意你的說法,在所有同意(就像一般的大多數總括性陳述一樣)。

使用IDS是完美的,當你有一些需要被唯一標識。這就是他們在那裏。

如果您有需要以某種方式組合其他元素,並通過它們的結構或代碼將無法正常引用它們的...然後我就退而使用類。

0

有時ID是必需的,例如,使用<label for="MyID">標記時。