【问题标题】:query list of dijit checkboxes inside a DIV查询 DIV 内的 dijit 复选框列表
【发布时间】:2023-04-11 04:55:01
【问题描述】:

我需要在 DIV 中找到所有 dijit.form.CheckBox 小部件并启用/禁用它们。我无法为它形成适当的查询。

我尝试了dojo.query("[dojoType~=dijit.form.CheckBox]"),但它给了我一个空列表。

什么是合适的查询? DOJO 查询可以返回一个 WidgetSet 还是它总是返回 DOM id?是否有一些不同的方式来查询 dijit 小部件?

【问题讨论】:

    标签: javascript dojo


    【解决方案1】:

    试试dijit.findWidgets:

    在根下搜索子树,把 在 outAry 中找到小部件。没有 搜索嵌套的小部件(即小部件 在其他小部件中)

    【讨论】:

    • 谢谢。 dijit.findWidgets 有效。除此之外,为了过滤掉复选框小部件,我写了类似dojo.filter(widgets,function(w) {return w.declaredClass =='dijit.form.CheckBox';});的东西。
    • 对于dojo 1.8,dijit.findWidgets 可以在dojotoolkit.org/api/1.8/dijit/registry#findWidgets找到
    【解决方案2】:

    这是 1.7 > 代码,它将递归搜索小部件,而不是像 findWidgets 那样只搜索直接后代

    需要"dojo/query" 和可选的"dijit/registry"

    var checkboxes = query("input[type=checkbox]:checked", "myForm");
    checkboxes.forEach((function (checkbox) {
        //dom node
        console.log(checkbox);
    
        //dijit
        console.log(registry.byId(checkbox.id));
    })); 
    

    这会查询 dom 节点 id myForm 下的选中复选框,并循环遍历结果并打印元素。请注意,这只会在结果集中给出 dom 节点元素,所以如果你想获得 dijits,你可以使用registry.byId(...)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多