3 回答

TA貢獻1963條經(jīng)驗 獲得超6個贊
自定義屬性提供了將額外數(shù)據(jù)傳輸?shù)娇蛻舳说谋憬莘绞?。Dojo Toolkit定期執(zhí)行此操作,并指出(Debunking Dojo Toolkit Myths):
自定義屬性始終是有效的HTML,它們只是在針對DTD進行測試時不進行驗證。[...] HTML規(guī)范規(guī)定,用戶代理中的HTML呈現(xiàn)引擎會忽略任何未識別的屬性,Dojo可以選擇利用此功能來提高開發(fā)的便利性。

TA貢獻1801條經(jīng)驗 獲得超8個贊
另一個選擇是在Javascript中定義這樣的東西:
<script type="text/javascript">var link_titles = {link1: "Title 1", link2: "Title 2"};</script>
然后,您可以稍后在Javascript代碼中使用它,假設(shè)您的鏈接具有與此哈希表中的ID對應(yīng)的ID。
它沒有其他兩種方法的缺點:沒有非標準屬性,也沒有丑陋的隱藏跨度。
缺點是對于像你的例子那樣簡單的事情可能有點過分。但對于更復(fù)雜的場景,您需要傳遞更多數(shù)據(jù),這是一個不錯的選擇。特別是考慮到數(shù)據(jù)是作為JSON傳遞的,因此您可以輕松地傳遞復(fù)雜對象。
此外,您將數(shù)據(jù)與格式分開,這對可維護性是一件好事。
你甚至可以擁有這樣的東西(你不能用其他方法真正做到):
var poi_types = {1: "City", 2: "Restaurant"};var poi = {1: {lat: X, lng: Y, name: "Beijing", type: 1}, 2: {lat: A, lng: B, name: "Hatsune", type: 2}};
...
<a id="poi-2" href="/poi/2/">Hatsune</a>
而且由于您最有可能使用某種服務(wù)器端編程語言,因此該哈希表應(yīng)該是動態(tài)生成的(只需將其序列化為JSON并將其吐入頁面的標題部分)。
添加回答
舉報