我覺得它像設置屬性arbitary非常方便:使用非標準HTML屬性被認爲是不好的做法嗎?
<a stackoverflowId="123">...</a>
而且在JavaScript:
var soId = $selectofA.attr('stackoverflowId'); //jQuery
它是一個很好的做法呢?我從來沒有遇到過這個問題。
我覺得它像設置屬性arbitary非常方便:使用非標準HTML屬性被認爲是不好的做法嗎?
<a stackoverflowId="123">...</a>
而且在JavaScript:
var soId = $selectofA.attr('stackoverflowId'); //jQuery
它是一個很好的做法呢?我從來沒有遇到過這個問題。
在HTML 5,你可以用data-*
屬性做到這一點:
<a id="myDiv" data-stackoverflowId="123">...</a>
由於您使用jQuery,你可能還需要檢查jQuery Metadata Plugin。它將允許您在類屬性中存儲和解析JSON元數據,並且您的標記仍將進行驗證。
您將能夠插入元數據是這樣的:
<a class="your_class {stackoverflowId: '123'}">...</a>
,並按如下提取它:
var data = $selectofA.metadata();
事實上,我不太在乎HTML5,但是與瀏覽器和開銷的兼容性(所以它是更好地使用更少的插件)。 – user198729 2010-01-22 14:55:18
如果你想與當前的瀏覽器兼容,你正在做什麼可以在所有流行的瀏覽器中工作......但是使用有效的標記可以幫助你保持與當前的**和未來的**瀏覽器兼容。 – 2010-01-22 14:58:06
說真的,元數據的方法不是侮辱受傷嗎?現在我們有一個類的屬性值,它可以是CDATA,符合HTML和XHTML規範,但這與大多數瀏覽器期望的類名或類名列表相差甚遠。我不會打賭我的cookies不會干擾類屬性的正常行爲。 – 2010-01-22 15:20:46
如果使用data-
屬性,它至少是有效的HTML5。請參閱John Resig's blog post on the subject.
+1這是HTML5小組的承認,人們無論如何都這樣做,所以我們不妨將其標準化。比現在人們大量地重載類屬性要好得多。 – 2010-01-22 14:59:02
另請參閱:http://ajaxian.com/archives/custom-dom-attributes-vs-class-css-styles – dreftymac 2010-01-22 15:20:23
我一直這樣做,它很棒。從來沒有遇到過這種技術的任何問題。我想它不是一個壞主意,但使用data-
前綴就像在某些答案中所建議的那樣。
如果您對標準合規性非常偏執,您可以以符合標準的方式編寫HTML,並在腳本中設置DOM上的屬性。至少,該文件將被驗證。但由於最終的結果將是相同的,你必須非常不滿,才能採用IMO自然的方式來擴展HTML,因爲它適合你。
另一種方法是編寫一個自定義DTD,該DTD準確定義要使用的擴展名。這種方法在這裏詳細描述:http://www.alistapart.com/articles/customdtd/
基本上這種方法依賴於在某處放置XHTML DTD的修改副本,並使用指向該定製DTD的文檔類型。您可以在修改後的DTD中定義額外的屬性聲明,顯然,w3c驗證器實際上將使用該DTD進行驗證。
但是,我不會使用這種方法爲正常的互聯網面臨的網站,永遠。恐怕有些瀏覽器可能會盡力驗證文檔是否對我的dtd進行了驗證,但是後來在某處中途放棄了一處錯誤。這種自定義的DTD技術並不是非常普遍,我根本不會冒這個常規網頁的機會。
如果您使用jQuery(這是你的例子),你應該看看數據的方法:
也許如果你描述你需要這個東西,因爲我們可以建議的解決方法。嚴格的答案應該是NO,但總會有一個似乎要求違反規則的角落案例。 – 2010-01-22 14:41:45
我認爲可以打破「規則」的案例不僅僅是角落案例。 – AnthonyWJones 2010-01-22 14:45:44
這是一個常見問題解答:http://stackoverflow.com/search?q=custom+html+attribute – dreftymac 2010-01-22 15:14:40