Dojo -如何在另一个forEach中的选定节点上使用forEach

e5nqia27  于 2022-12-16  发布在  Dojo
关注(0)|答案(2)|浏览(246)

在jQuery中,我会:

var foo = jQuery("form");
foo.each(function(){
  this.find(".required").each(function(){...})
})

这将查找当前处理的表单中的每个必填字段。
但是由于我必须使用Dojo,我有点迷失了。在Dojo中,你需要使用dojo.forEach()

var foo = dojo.query("form");
    dojo.forEach(foo, function(self,i){

    // And now I have no idea on what to use the forEach. 
    // The "self" parameter is the form node. So now I 
    // would need something like `self.forEach`
    // But that obviously does not work

    }
unftdfkk

unftdfkk1#

请注意,您可以使用dijit.form.Form,这样可以为您的支票保存很多麻烦;)此外,您可以直接使用以下命令来代替嵌套forEach:

dojo.query("form *.required").forEach(function(requiredNode){}, this);

甚至(但尚未测试)

dojo.query("form .required").forEach(function(requiredNode){}, this);
vaqhlq81

vaqhlq812#

您只需要再执行一次查询,就像您在第一级中所做的那样,Dojo中的哲学是,事情通常没有jQuery中的那么“神奇”。

var forms = dojo.query("form"); //No second argument; Searches whole document
dojo.forEach(forms, function(form){
    var requireds = dojo.query(".required", form);//Only search under 
                                                  // the current form.
    dojo.forEach(requireds, function(required){
        /* do stuff*/
    });
})

我还擅自更改了self变量的名称(因为与jQuery不同,Dojo不更改this),并从forEach中删除了可选的i参数。

相关问题