2012-09-08 81 views
41

目前在我們的插件設置在html5中設置複選框爲選中狀態,我應該簡單地使用checked(作爲屬性)還是checked =「checked」(作爲屬性)?

<input type="checkbox" checked="checked" /> 

這是爲了保持兼容性XHTML作爲託運我們設定的複選框。我更習慣設置檢查作爲屬性

<input type="checkbox" checked /> 

什麼是HTML5進行正確的方法是什麼?我們應該還在乎XHTML兼容性?

+3

請注意,您在HTML5中也不需要'/>'。 –

+1

這不是一個屬性,這仍然是一個屬性。如果您在腳本中或其他任何將其稱爲屬性的位置執行此操作,則只會設置該屬性。但在HTML和XML標記中,它被稱爲屬性。 – BoltClock

回答

35

正是在這兩種情況下的屬性。在任何一種情況下,它都會在元素節點的DOM屬性上設置一個值(相同的值,true)。

對於大多數用途,使用哪種語法並不重要。然而,也有一些需要注意的事項:

  • 如果您在XML序列化(「XHTML5」)使用HTML5,你必須使用checked="checked"
  • 在樣式中,使用屬性選擇器時語法不完全相同(較短的格式不匹配[checked=checked]),但在實踐中這並不重要:在任何情況下,[checked]都匹配複選框。
  • 笨拙的語法checked="checked"是一個來自SGML的保留,並且僅用於兼容性,因此它可能會使您的代碼看起來過時(這很少有關係)。
+0

這個語法是否從SGML延伸到XHTML(而不是XML)? – BoltClock

+1

'checked =「checked」'語法也被帶入了XML。 HTML5不是基於SGML或XML,因此它可以更自然地定義自己的語法:「布爾」屬性只是一個名稱(不需要將其解釋爲名稱=值語法的簡化形式)。 –

+0

@DanDascalescu當使用jQuery來設置屬性時,你必須調用.prop('checked','checked'),因爲prop('checked')顯然只會檢索複選框的狀態,attr將不起作用。 [屬性與屬性:http://api.jquery.com/prop/] –

22
<!-- Default to unchecked --> 
<input type="checkbox"> 

<!-- Default to checked, XHTML --> 
<input type="checkbox" checked="checked" /> 

<!-- Default to checked, HTML5 --> 
<input type="checkbox" checked> 

來源:http://css-tricks.com/indeterminate-checkboxes/

7

Checked在HTML 5.一個布爾屬性的真值由屬性所指示存在,和僞值被指示由於缺席。如果它存在,它的值應該是空的或設置爲屬性名稱checked="checked"。下面這些形式都是正確的:

<input type="checkbox" checked="checked" /> 
<input type="checkbox" checked> 

http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes

+0

你的鏈接已被打破,請更新!這裏是:http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes – NessDan

+2

完成。將來,請隨時自行編輯這樣的內容。協作是使這個網站的答案很好的原因。 – jncraton

+1

我沒注意到!感謝@jncraton的信息! – NessDan

5

您關心HTML5 XHTML兼容,如果要創建使用HTML5的XHTML序列化的文件,要麼完全由與application/xhtml+xml MIME類型服務的文檔,或創建一個既可以提供一個多語種的文件如application/xhtml+xmltext/html('normal'html mime-type)。

如果您只使用text/html,那麼您不需要關心XHTML語法。但是,在您的頁面中嵌入SVG或MathML時,可能會使用XML樣式的自閉合語法。 (SVG在最新的瀏覽器中得到了廣泛的支持,MathML的支持更少)。您也可以使用/>來結束void HTML元素,如元,鏈接,輸入,img等,但這與使用>來終止這些效果不同元素。

對術語的小評論。在標記中,通常的說法是checkedchecked="checked"是「屬性」。 「財產」是別的。

相關問題