2009-12-11 9 views
5

DIV 안에 모든 dijit.form.CheckBox 위젯을 찾아서 모두 활성화/비활성화해야합니다. 나는 그것에 대한 적절한 쿼리를 형성 할 수 없습니다.DIV 내의 dijit 체크 박스의 쿼리 목록

나는 dojo.query("[dojoType~=dijit.form.CheckBox]")을 시도했지만 빈 목록을 제공합니다.

적절한 쿼리는 무엇입니까? DOJO 쿼리가 WidgetSet을 반환 할 수 있습니까? 아니면 항상 DOM ID를 반환합니까? dijit 위젯을 쿼리 할 때 다른 방법이 있습니까?

답변

9

dijit.findWidgets을 시도해보십시오

검색 하위 트리를 루트 아래에, 이 outAry에 위젯을 발견 퍼팅. 합니까 중첩 된 위젯 (즉, 위젯을 다른 위젯 내부 )

+4

Thanx를 사용할 수 있습니다. ''dijit.findWidgets''가 작동합니다. 이 외에도, 체크 박스 위젯을 걸러 내기 위해 나는''dojo.filter (widgets, function (w) {return w.declaredClass == 'dijit.form.CheckBox';});''와 비슷한 것을 썼다. –

+0

dojo 1.8의 경우 dijit.findWidgets는 http://dojotoolkit.org/api/1.8/dijit/registry#findWidgets에서 찾을 수 있습니다. –

0

이 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 아래 체크 박스를 확인하고 일을 통해 루프 e 결과를 표시하고 요소를 인쇄합니다. 이 옵션은 결과 집합에 dom 노드 요소 만 제공하므로 dijits를 얻으려면 registry.byId(...)

관련 문제