2009-01-09 144 views
40

我是否允許將任何屬性添加到HTML標記中,以便稍後使用JavaScript檢索它們的值?例如:我可以在我的HTML標籤上設置屬性嗎?

<a href="something.html" hastooltip="yes" tipcolour="yellow">...</a> 

如果這樣做不起作用,那麼您將如何存儲任意類似的信息?

編輯:由於看來彌補HTML屬性不是技術上有效,我已經改寫了這個問題的第二部分到它自己的問題在這裏:How to store arbitrary data for some HTML tags

+1

+1我是一個使用數據屬性聲明性接線行爲的大愛好者,而不是使用類。然而,像tipcolour我會嘗試使用一個類,如果我能得到正確的CSS。換句話說,行爲的屬性,風格的類。 – AaronLS 2012-10-31 17:57:26

回答

43

在HTML5中,是的。你只需要以data-爲前綴。見the spec

當然,這意味着您應該使用HTML5文檔類型(<!doctype html>),即使瀏覽器不在意。

4

可以。該頁面不會通過驗證,但大多數瀏覽器都會接受。

這幾乎肯定是做錯的一種方式。嘗試使用class =「hasTooltip_yes tipcolour_yellow」

+0

你不覺得那個混蛋的類屬性更糟嗎? – nickf 2009-01-09 06:53:18

+1

如果你對班級屬性進行了混搭,它仍然會驗證,所以就遵守標準而言,你的狀況還是比較好的。 – 2009-01-09 06:56:08

+17

僅僅因爲你遵守標準,並不意味着你有最好的解決方案。 – Kibbee 2009-01-11 02:23:18

2

根據要存儲的信息,您應該查看一些可用的其他屬性。這些看起來不是很好的候選人,但'rel'已被用於許多有趣的事情。

+0

根據規範,rel屬性只能包含LinkTypes,例如:start next prev chapter – nickf 2009-01-09 06:59:21

24

那麼,你總是可以創建自己的DTD來爲你的標籤獲取新的有效屬性。瀏覽器不會打嗝,如果你可以訪問這些自定義屬性,你應該測試你的JavaScript。或者您可以使用HTML和CSS提供的現有設施。您可以像使用

<a href="..." class="class-one class-two has-tooltip"> 

多個類選色我極力勸阻你在你的HTML中使用硬編碼的顏色名稱,你必須宣告風格CSS。使用類屬性爲CSS聲明鉤,並選擇語義類的名稱,例如

HTML:

<a href="..." class="has-tooltip common-tooltip"> 
<a href="..." class="has-tooltip long-tooltip"> 

CSS:

a.has-tooltip { 
    colour: red; 
} 
a.common-tooltip { 
    background: #ddd; 
} 
a.long-tooltip { 
    background: #ebf; 
} 

而在你的JavaScript代碼,你可以生成類似「long-tooltip」和「common-tooltip」而不是「yellow-tooltip」的類的元素,所以在重新設計頁面以獲得綠色工具提示時,您不會反駁自己。

相關問題