Dojo - как использовать forEach на выбранном узле внутри другого forEach - PullRequest
3 голосов
/ 03 января 2012

В jQuery я бы сделал:

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

// который найдет каждое обязательное поле в обрабатываемой в данный момент форме.

Но так как я должен использовать Додзё, я вроде как потерян. В 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
}

Ответы [ 2 ]

2 голосов
/ 03 января 2012

Вам просто нужно сделать еще один запрос, как вы делали на первом уровне. Философия додзё заключается в том, что вещи обычно менее «волшебны», чем в 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*/
    });
})

Я также позволил себе изменить имя собственной переменной (поскольку в отличие от jQuery, Dojo не изменяет this) и удалил необязательный параметр i из forEach.

1 голос
/ 05 января 2012

Обратите внимание, что вы могли бы использовать dijit.form.Form и сэкономить много хлопот для ваших проверок;) Также вместо вложения forEach вы могли бы напрямую использовать:

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

или даже (но еще не тестировали)

dojo.query("form .required").forEach(function(requiredNode){}, this);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...