У меня есть меню навигации, в котором при выборе элемента в меню появляется подменю. Подменю может содержать 3 возможных элемента: текст, представляющий категорию, URL-адрес, по которому пользователь куда-то направляется, и поле поиска, с помощью которого пользователь может вводить данные и нажимать кнопку, чтобы перейти к действию контроллера. В целях дизайна каждые пять элементов сгруппированы в одну ul.
Это пример такого подменю:
<div id = "submenu">
<ul>
<li> Products </li>
<li> <a href = "ourproducts"> View Our Products</a></li>
<li> <form method="GET" action="/"><input value="" name="searchproduct"><input type="Submit" value="Search For Product"> </form> </li>
</ul>
У меня есть функция mouseleave в подменю, которая заставляет подменю скрываться. Однако, если форма имеет фокус (скажем, пользователь пытается что-то ввести и случайно нажимает на мышь), то я не хочу, чтобы подменю исчезало.
Это то, что я пробовал до сих пор:
$("#submenu").mouseleave(function () {
var childhasfocus= 0;
for (var i = 1; i < $(this).children().length; i++) {
if ($(this).children[i].is(":focus") == true) { //CODE GOES UP TO HERE BEFORE BREAKING
childhasfocus = 1;
}
}
// TRIED THIS- if ($(this + '>:focus').length > 0){
if (childhasfocus != 1){
hideLinks();
}
});
Два вопроса:
1: Если у одного из элементов внутри ul есть фокус, будет ли у ul также фокус?
2: Что мне заменить мой оператор if с?