Как добраться до объекта yuimenu после того, как он был создан? - PullRequest
0 голосов
/ 20 мая 2011

У меня работают некоторые всплывающие меню на основе юймену, и, вообще говоря, все хорошо. Однако я обнаружил, что мне нужно взять в руки объект меню, чтобы я мог что-то с ним сделать после того, как он был создан (например, скрыть открытое меню, когда что-то еще происходит на странице). Я могу найти div класса yuimenu, но мне нужен объект, чтобы я мог (предположительно) сделать cfg.setProperty('visibility', 'hidden') или что-то похожее на него.

Итак: Как я могу получить этот объект? Я пытался YAHOO.widget.Menu(theDivID), но это загорелось. Спасибо! (ps: Если я все делаю неправильно, пожалуйста, дайте мне знать!)

1 Ответ

0 голосов
/ 21 мая 2011

Я нашел способ сделать это, но не могу сказать, что мне это очень приятно:

  • Объявите allTheMenus, глобальную переменную javascript, предназначенную для сбора всех элементов yuimenu, которые будут размещены на странице.

  • Когда страница построена, поместите каждый экземпляр меню в эту переменную / массив.

  • Когда происходит специальное событие (в моем случае пользователь, щелкающий по ссылке, которая вызывает диалоговое окно наложения div для сбора некоторого пользовательского ввода), делает следующее:

    • Проверьте страницу, чтобы увидеть, есть ли какие-либо предметы класса yuimenu, стиль которых виден (например, $('.yuimenu[style*=visible]')...
    • Если он есть (в моем случае он может быть только один; ваша ситуация может отличаться), получите его идентификатор и (тьфу) цикл через глобальный массив всех экземпляров yuimenu и найдите тот, который имеет тот же идентификатор.
    • Сделайте this.cfg.setProperty('visible', false) на нем и выйдите из цикла (опять же, при условии, что есть только один элемент, который может быть виден).

Как я и сказал - я не горжусь кодом, но он работает. Я хотел бы, чтобы кто-то показал мне, что есть лучший способ сделать это ...

...