2009-12-22 201 views
1

我是新來的Dojo(在jQuery方面很有經驗),我正在努力添加/刪除一些會改變主導航鏈接和下拉菜單樣式的類。這些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的值是正確的。

我在這裏做錯了什麼? 側面問題:是否有更多的Dojo慣用的方式來做到這一點?

回答

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'); 
    }); 
    }); 
});