2016-02-02 24 views
1

我有一個DIV,其中包含多個小部件,如下拉菜單,按鈕,文本框,複選框,單選按鈕小部件。我想禁用按鈕點擊div內的所有小部件。有沒有一種方法可以禁用整個div,而不是遍歷每個輸入元素或其中的小部件。我嘗試了以下方法,使用Dojo禁用DIV中的所有小部件

dojo.query('#container :input').attr('disabled', 'true'); 

這將禁用所有輸入元素,如文本框,但是按鈕仍然是可點擊的。我必須得到按鈕ID並再次禁用它。這將是DOM昂貴的操作?

我試過使用CSS指針事件屬性,但是這似乎有瀏覽器問題。

什麼是穩健和高效的方式,我可以做到這一點,這使得未來的改進更容易,比如增加新的部件和輸入元素到div

+0

在你的dojo查詢選擇器中包含按鈕id有什麼問題? –

+0

我不確定在所有輸入元素上使用查詢會導致操作代價高昂。使用按鈕ID的問題,我的意思是,如果我想添加新按鈕,我必須回來並再次更改代碼 – nikitha

+0

嘗試使用父容器的子屬性? – tik27

回答

1

如果您使用的是像dijit/form/Buttondijit/form/TextBoxdijit組件,然後你應該使用set函數。您可以使用registry獲取div中的所有小部件。

require([ 
    "dojo/_base/array", 
    "dojo/dom", 
    "dijit/registry", 
    "dojo/domReady!" 
], function (array, dom, registry) { 
    var _widgets = registry.findWidgets(dom.byId("fooDiv")) 
    array.forEach(_widgets, function(item){ 
     item.set('disabled', true); 
    }); 
}); 

這只是一個說明性的例子,讓你看到語法,希望它有幫助。

相關問題