我有一个内置多个小部件的DIV,如下拉列表,按钮,文本框,复选框,单选按钮小部件。我想在按钮单击时禁用div中的所有小部件。有没有办法可以禁用整个div,而不是遍历每个输入元素或其中的小部件。我试过以下,
dojo.query('#container :input').attr('disabled', 'true');
这将禁用所有输入元素,如文本框,但按钮仍然是可点击的。我必须得到按钮ID并再次禁用它。这会是DOM昂贵的操作吗?
我尝试过使用CSS指针事件属性,但这似乎有浏览器问题。
我可以实现这一目标的强大而有效的方法,这将使未来的增强更容易,例如向div添加新的小部件和输入元素
答案 0 :(得分:1)
如果您使用的是dijit
,dijit/form/Button
等dijit/form/TextBox
组件,那么您应该使用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);
});
});
这只是一个说明语法的示例,希望它有所帮助。