如何隐藏 dijit/form/button?

Posted

技术标签:

【中文标题】如何隐藏 dijit/form/button?【英文标题】:How can I hide a dijit/form/button? 【发布时间】:2013-08-07 07:05:04 【问题描述】:

我认为提供一种简单的方法来隐藏/显示和启用/禁用按钮是一种常识,但我找不到任何描述 dojo 的文档做了这样的事情。 无论如何,我希望我在谷歌搜索时错过了一些东西是我的错,谢谢!

以下编码是我尝试过的,但它们只是使按钮的文本不可见:

dojo.style(btnInsert, 'visibility':'hidden');
dojo.style(btnInsert, 'display':'none');

更新问题:

到 oborden2:

我试过你的代码,结果和上面的代码一样,这里是截图:

致米布洛克:

我也试过你的代码,也得到了和上面代码一样的结果:

【问题讨论】:

【参考方案1】:

Dijit 中的表单小部件很特别。对于所有普通 Dijit 小部件,小部件的 domNode(最外层节点)接收 id 属性。但是,对于表单小部件,focusNode(对应于 <input> 元素)会接收 ID,因此 <label for="foo"> 之类的东西可以正常工作。在这种情况下,最外层节点没有 ID,实际上您只是隐藏了内部 html 输入元素。

如果您已经引用了小部件:

require([ 'dojo/dom-style' ], function (domStyle) 
    domStyle.set(widget.domNode, 'display', 'none');
);

如果你只有一个小部件/原始 DOM 节点的 ID 的引用:

require([ 'dojo/dom-style', 'dijit/registry' ], function (domStyle, registry) 
    domStyle.set(registry.byId(nodeId).domNode, 'display', 'none');
);

【讨论】:

【参考方案2】:

试试

require(["dojo/dom-style","dojo/domReady!"], function(domStyle)
    domStyle.set(dojo.byId(domNode),'display','none');
);

变量“domNode”保留应该影响的节点的 id。这就是我们制作它的方式。

问候,米里亚姆

【讨论】:

【参考方案3】:

尝试使用 Toggler 模块

require(["dojo/fx/Toggler"], function(Toggler),
    // Create a new Toggler with default options
    var toggler = new Toggler(
        node: "btnInsert"
    );

    // Hide the node
    toggler.hide();

    // Show the node
    toggler.show();
);

http://dojotoolkit.org/reference-guide/1.9/dojo/fx/Toggler.html

我想您可能希望使用 Dojo 的 on 模块将此链接到某个事件。将其链接到触发按钮需要隐藏的任何条件。

【讨论】:

我使用 Toggler 做了一些测试,但并没有真正隐藏按钮。它只是让它变得透明。您仍然可以通过将鼠标悬停在其先前位置并单击它来单击该按钮。我很想知道你是如何解决这个问题的?

以上是关于如何隐藏 dijit/form/button?的主要内容,如果未能解决你的问题,请参考以下文章

Dojo:如何设置禁用新按钮

id 和 data-dojo-id 之间的区别

在dijit的图标按钮的点击加载的dijit日历的具体日期禁用

如何在Dialog中添加div?

dojo需要不同的js文件

如何将自定义图像添加到按钮(dojo 1.7)