проверка всех дочерних элементов подменю, чтобы увидеть, имеет ли какой-либо элемент фокус в jquery, используя: focus selector

У меня есть меню навигации, в котором при выборе элемента в меню появляется подменю. Подменю может содержать 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 с?

5
задан tehdoommarine 25 January 2012 в 19:18
поделиться