Как добраться до объекта yuimenu после его создания?

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

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

1 ответ

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

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

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

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

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

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

Другие вопросы по тегам