2012-01-03 5 views
3

内の選択したノード上のforEachを使用する方法を、私はどうなる:道場 - jQueryのでは、別のforEach

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

//現在処理フォーム内のすべての必要なフィールドを見つけることになります。

しかし、私はDojoを使用する必要があるので、私はちょっと迷っています。道場では、あなたが最初のレベルで行ったようにあなたは、再び別のクエリを実行する必要があります()

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

dojo.forEachを使用する必要があります。 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*/ 
    }); 
}) 

また、私は(jQueryのとは違って、道場はthisを変更しないので)自己変数の名前を変更するために自由を取ったとのforEachからオプションiのパラメータを削除しました。あなたがdijit.form.Formは少しを使用して、あなたのチェックのために手間を大幅に節約することができた

+0

私が見ている「マジック」は、ここでは2番目のクエリで使用しています。ありがとうたくさん – Krym

+0

私が指していた魔法は、jqueryがノードの配列ではなくラップされたjqueryオブジェクトの配列を返すことです。しかし、はい、そのトリックだった。 – hugomg

1

注;) また、代わりにあなたが直接使用することができたのネストのforEachの:

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

かさえ(しかし、まだテストしていない)

dojo.query("form .required").forEach(function(requiredNode){}, this); 
関連する問題