2010-12-16 138 views
42

我在一個頁面中有一個表格,左邊的單元格中有複選框,右邊的單元格中有描述。 「描述」包含h4標題和純文本。我想將整個描述(<td></td>內的所有內容)作爲標籤。內部的HTML標記<label>

所以每一行看起來是這樣的:

<tr><td><input type="checkbox" name="entiries[]" value="i1" id="i1"></td> 
<td><label for="i1"> 
<h4>Some stuff</h4>more stuff.. 
<h4>Some stuff</h4>more stuff.. 
</label> 
</td></tr> 

然而,這並不工作,文本不會像一個標籤,而不是點擊。我使用Firefox 3.6來測試它。如果我刪除<h4>標籤,它開始工作,但這使格式化變得複雜。有沒有關於<h*>標籤阻止<label>正常工作的內容?

回答

40

塊級元素(h4所屬的塊級元素)不允許在行內元素中,並且會導致未定義的行爲。您可以改爲使用span元素。

+2

塊級元素不允許在'span'中。 – Kornel 2010-12-16 14:49:47

+0

確實解決了這個問題。設置跨度顯示的樣式:block允許我使它看起來幾乎與標題相同(因此該跨度的CSS條目與h4 + display:block相同),並且標籤功能也可以工作。 – SaltyNuts 2010-12-16 14:55:37

+6

我認爲他的意思是「而不是h4s」而不是「代替標籤」 – Quentin 2010-12-16 14:55:57

27

只有inline elements(除了其他標籤元素)可能出現在標籤元素內。

<!ELEMENT LABEL - - (%inline;)* -(LABEL) -- form field label text --> 

- http://www.w3.org/TR/html4/interact/forms.html#h-17.9.1

它沒有意義把標題反正有。

+2

+1最後一位。標題中的標題沒有意義。 – You 2010-12-16 14:49:38

+4

請不要談論是什麼造成了什麼以及什麼是沒有意義的。你不知道我的項目的背景是什麼,爲什麼要評判它? – SaltyNuts 2010-12-16 14:57:05

+8

這不是對你或你的項目的判斷,而是關於標籤的語義。在語義上,「標籤」元素就像是一個且只有一個控件的標題。所以這已經是一個標題。把另一個標題放在裏面是多餘的。另外,'H *'標題可以指向很多東西,但是在標籤中只允許指向一個東西,與標籤已經指向的東西相同。這就像使用標題作爲圖像的標題一樣。它在語義上沒有意義。就外觀而言,使用視覺上類似於'H *'標籤的'span'標籤可能是有意義的。 – brentonstrine 2012-05-15 20:25:45

14

HTML中的<label>元素是內嵌級元素,不能包含塊級元素。

這可能是什麼導致你的問題。或者,您可以將標籤放在<h4>的內部:

<tr><td><input type="checkbox" name="entiries[]" value="i1" id="i1"></td> 
<td>< 
<h4><label for="i1">Some stuff</label></h4>more stuff.. 
<h4><label for="i1">Some stuff</label></h4>more stuff.. 
</label> 
</td></tr> 
+6

您知道,我從來沒有想到,您可以爲給定的複選框使用多個標籤。謝謝! – SaltyNuts 2010-12-16 14:59:17