2012-05-13 46 views
1

如果使用jQueryUI創建無線電/複選框輸入按鈕集,則必須使用顯式標籤。這意味着您必須通過ID將label關聯到inputjQueryUI按鈕集需要唯一ID

如果您想在同一頁面上使用多個相同的按鈕集,這意味着您不能只爲每個按鈕集使用相同的代碼,因爲ID在文檔中必須是唯一的。

大多數瀏覽器都會接受非唯一的ID,但我寧願不會被迫打破Web標準,顯然沒有保證瀏覽器將來會繼續支持非唯一ID。

我可以爲每種情況生成唯一的ID,但是這會使代碼複雜化,並增加了保證ID的問題的確是唯一的。

處理多個相同的按鈕組的最佳方法是什麼?

這說明問題:http://jsfiddle.net/C3NyV/1/

在我的特定情況下,通過使用控件工廠創建一個插件生成的buttonset。我不知道這是否有助於解決這個特定問題。

回答

1

無論jQuery UI如何,您都應該將所有輸入的id屬性與具有for屬性的標籤進行匹配,以實現可訪問性。當屏幕閱讀器遇到輸入字段時,它將使用此條件查找匹配的標籤。

而不是生成一個唯一的標識符我會建議使用更多的語義來區分不同的集合。這可能是更多的工作,但它會更標準,可訪問和可維護的代碼。

+0

嗯,我想,但問題是這樣的:1. jQueryUI buttonset()需要使用ID的。 2. HTML規範要求ID是唯一的。如果您想在單個頁面上多次使用按鈕集,這兩個似乎與彼此不一致。由於我直接引用DOM節點,所以在集合之間進行區分並不是問題的一部分。 – Martijn

+0

您能詳細說明需要哪些2個ID嗎?我更新了你的Fiddle - http://jsfiddle.net/bRhRM/1/,這兩個容器之間不同的唯一id就是4個單選按鈕本身的id,這對於可訪問的標記是必需的。 –

+0

是的,問題是單選按鈕的HTML代碼將在客戶端生成,這使得創建唯一ID很困難。除非您執行相對昂貴的生成/檢查(如果存在)循環,否則不會生成已生成的標識。理想情況下,buttonset()不會依賴ID。 – Martijn