Как добраться до объекта 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)
на нем и выйти из цикла (опять же, при условии, что есть только один элемент, который может быть видимым).
- Проверьте страницу, чтобы увидеть, есть ли какие-либо элементы класса yuimenu, чей стиль виден (например,.
Как я уже сказал - я не горжусь кодом, но он работает. Я хотел бы, чтобы кто-то показал мне, что есть лучший способ сделать это...