1

dojo.queryを使用して、CSSセレクターに基づいて特定の要素を取得できますが、オブジェクトタイプをクエリするにはどうすればよいですか?
たとえば、ページ上のすべてのTextBox要素を取得してから、dojo.connectを使用して関数をバインドしますか?

4

1 に答える 1

3

これは完全にはサポートされていませんが、私が見ているようにそれを行うには2つの方法があります。

1つは、TextBox(.dijitTextBox)の一意のクラスを特定し、呼び出しdojo.query('.dijitTextBox')て結果をループdojo.forEachし、次のウィジェットを取得します。dijit.getEnclosingWidget(domnode)

var textboxArray = [];
dojo.forEach(dojo.query('.dijitTextBox'), function(domnode) {
  textboxArray.push(dijit.getEnclosingWidget(domnode));
});

または2つ、-connectの場合はdijit.registry._hash、テストをループします。declaredClassdijit.form.TextBox

var textboxArray = dojo.filter(dijit.registry._hash, function(widget) {
  return widget.declaredClass && widget.declaredClass == 'dijit.form.TextBox';
})

設定に応じて、最も効率的なものを選択してください。ページに数百のウィジェットがない限り、後者が一般的に最適です。1つ目は、ページのすべての要素をxpathする必要があります。ただし、dojo.queryは2番目のパラメーターを「parentNode」として受け取ることに注意してください。

于 2012-08-19T13:22:30.177 に答える