为什么这些Dojo悬停事件不起作用?

时间:2009-12-22 20:04:55

标签: javascript javascript-events dojo

我是一个项目的Dojo(在jQuery方面很有经验)的新手,我正在努力添加/删除一些将改变主导航链接和下拉列表样式的类。

这是我写的代码:

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,alert)。 linkhoverToggles的值是正确的。

我在这里做错了吗? 附带问题:是否有更多的Dojo惯用法呢?

1 个答案:

答案 0 :(得分: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');
    });
  });
});