2009-12-22 2 views
1

프로젝트를 위해 jQuery에 익숙한 Dojo를 처음 사용했으며 기본 탐색 링크 및 드롭 다운의 스타일을 변경할 일부 클래스를 추가/제거하는 중입니다. 이벤트 핸들러에 배치Dojo 호버 이벤트가 작동하지 않는 이유는 무엇입니까?

dojo.addOnLoad(function() { 
    dojo.query('#primary-nav > ul > li > div').forEach(function(container) { 
     var hoverToggles = dojo.query('> a, > ul', container), 
      link = dojo.query('> a', container); 

     dojo.connect(link, 'onmouseover', function() { 
      dojo.addClass(hoverToggles, 'hover'); 
     }); 

     dojo.connect(link, 'onmouseout', function() {   
      dojo.removeClass(hoverToggles, 'hover'); 
     }); 
    }); 
}); 

없음 코드가 실행됩니다 (CONSOLE.LOG, 경고) : 여기

내가 작성한 코드입니다. linkhoverToggles의 값이 정확합니다.

여기 뭔가 잘못 되었나요? 사이드 질문 :이 작업을 수행하는 도장 관용적 인 방법이 더 많습니까?

답변

5

dojo.query()은 NodeList를 반환합니다. dojo.addClass() 그리고 나머지는 DOM 노드에서 작동합니다. 그런

시도 뭔가 :

dojo.addOnLoad(function() { 
    dojo.query('#primary-nav > ul > li > div').forEach(function(container) { 
    var hoverToggles = dojo.query('> a, > ul', container), 
     link = dojo.query('> a', container); 

    link.onmouseover(function() { 
     hoverToggles.addClass('hover'); 
    }); 

    link.onmouseout(function() {    
     hoverToggles.removeClass('hover'); 
    }); 
    }); 
}); 
관련 문제