2016-06-17 3 views
0

У меня есть меню с триггером на событии нажатия кнопки. На стороне клиента всякий раз, когда отображается меню, я хотел бы добавить стиль для кнопки запуска, а когда меню скрыто, удалите стиль с кнопки.Главное меню меню onhide

Для добавления стиля я могу добавить слушателя к кнопке и добавить стиль. Но когда меню скрыто, как я могу добавить слушателя в меню, чтобы удалить стиль с кнопки?

Есть ли способ, чтобы добавить слушателя к событию меню компонента скрыть

Ниже приведен код, сниппет для меню и кнопки для ссылок:

<div class="round-button-circle"> 
         <p:link id="MenuLink" href="javascript:void(0)"/> 
        </div> 
       <p:menu overlay="true" widgetVar="menuWidgetVar" trigger="MenuLink" styleClass="PageHeaderMenu ui-menu-child" > 
        <p:menuitem ... 
       </p:menu> 
+0

Посмотрите на источник JavaScript PrimeFaces компонента меню. Этот источник легко читается и расширяется/переоценивается. Возможно, вы видите какое-то событие, в которое вы можете подключиться. – Kukeltje

ответ

0

Я мог бы сделать это с помощью переопределения скрыть функцию в экземпляре widgetVar меню. Как-то widgetVar не был инициализирован в document.ready случае, следовательно, я должен был ленивым инициализировать меню-

Добавлен OnClick перехватчик для кнопки

<p:link id="MenuLink" href="javascript:void(0)" onclick="showUserMenu();"/> 

Ниже приведен код для OnClick слушателя:

var showUserMenu = function() { 
var menuWidget = PF('menuWidgetVar'); 
if(menuWidget === undefined) { 
    return; 
} 

//lazy initialzed because the PF widgetVar is not visible in document.ready event 
if(!menuSettings.initialized) { 
    //proxy the method for hide to update styles 
    var _hide = menuWidget.hide; 
    menuWidget.hide = function() { 
     _hide.apply(menuWidget); 

     //on hide remove style classes 
     $("#MenuLink").removeClass('button-selected'); 

    }; 
    menuSettings.initialized = true; 
} 

//on click add style classes 
$("#MenuLink").addClass('button-selected'); 
}; 
Смежные вопросы