Почему не работают эти парящие события Dojo? - PullRequest
1 голос
/ 22 декабря 2009

Я новичок в 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). Значения для link и hoverToggles являются правильными.

Я что-то здесь не так делаю? Дополнительный вопрос: есть ли более додзё-идиоматический способ сделать это?

1 Ответ

5 голосов
/ 22 декабря 2009

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