Таким образом, у меня есть выпадающее меню, которое показывает при щелчке согласно бизнес-требованиям. Меню становится скрытым снова после Вас мышь далеко от него.
Но теперь меня просят иметь его, остаются на месте до пользовательских щелчков где угодно по документу. Как это может быть выполнено?
Это - упрощенная версия того, что я имею теперь:
$(document).ready(function() {
$("ul.opMenu li").click(function(){
$('#MainOptSubMenu',this).css('visibility', 'visible');
});
$("ul.opMenu li").mouseleave(function(){
$('#MainOptSubMenu',this).css('visibility', 'hidden');
});
});
<ul class="opMenu">
<li id="footwo" class="">
<span id="optImg" style="display: inline-block;"> <img src="http://localhost.vmsinfo.com:8002/insight/images/options-hover2.gif"/> </span>
<ul id="MainOptSubMenu" style="visibility: hidden; top: 25px; border-top: 0px solid rgb(217, 228, 250); background-color: rgb(217, 228, 250); padding-bottom: 15px;">
<li>some</li>
<li>nav</li>
<li>links</li>
</ul>
</li>
</ul>
Я попробовал что-то вроде этого $('document[id!=MainOptSubMenu]').click(function()
думая это включило бы что-либо, что не было меню, но это не работало.
Взгляните на подход, использованный в этом вопросе:
Как определить щелчок вне элемента?
Прикрепите событие щелчка к тексту документа, которое закрывает окно. Прикрепите к окну отдельное событие щелчка, которое останавливает распространение в тексте документа.
$('html').click(function() {
//Hide the menus if visible
});
$('#menucontainer').click(function(event){
event.stopPropagation();
});
Если использование подключаемого модуля в вашем случае нормально, то я предлагаю подключаемый модуль Бена Алмана, расположенный здесь :
, его использование очень простое:
$('#menu').bind('clickoutside', function (event) {
$(this).hide();
});
надеюсь, это поможет.
2 варианта, которые вы можете изучить: