使用Dojo禁用DIV中的所有小部件

时间:2016-02-02 02:26:29

标签: javascript jquery html css dojo

我有一个内置多个小部件的DIV,如下拉列表,按钮,文本框,复选框,单选按钮小部件。我想在按钮单击时禁用div中的所有小部件。有没有办法可以禁用整个div,而不是遍历每个输入元素或其中的小部件。我试过以下,

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

这将禁用所有输入元素,如文本框,但按钮仍然是可点击的。我必须得到按钮ID并再次禁用它。这会是DOM昂贵的操作吗?

我尝试过使用CSS指针事件属性,但这似乎有浏览器问题。

我可以实现这一目标的强大而有效的方法,这将使未来的增强更容易,例如向div添加新的小部件和输入元素

1 个答案:

答案 0 :(得分:1)

如果您使用的是dijitdijit/form/Buttondijit/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);
    });
});

这只是一个说明语法的示例,希望它有所帮助。