проблема идентификации объекта jquery-ui - PullRequest
0 голосов
/ 14 мая 2011

У меня небольшая проблема при идентификации элемента с помощью jQuery.Позвольте мне объяснить лучше:)

У меня есть меню, которое появляется, когда пользователь нажимает кнопку.Это работает отлично.Затем я хочу, чтобы это меню исчезло, когда пользователь нажимает на любую часть сайта, кроме меню.Это также прекрасно работает, но с небольшой проблемой: в меню есть пункт, который позволяет пользователю выбирать из списка автозаполнения.Этот список был сделан с помощью автозаполнения jquery-ui.Когда пользователь нажимает на элемент здесь, меню исчезает (этого не должно быть :)), и я не знаю, как сделать исключение для этого, так как я не знаю, как я могу получить элемент, могу ли язахватить это классом?Имеется ли у него идентификатор?

У меня есть следующий код, чтобы определить, где выполняется щелчок, и продолжайте (вы можете видеть, что при нажатии кнопки меню или меню меню не будет скрыто).Как сделать исключение, когда щелчок сделан в автозаполнении jQuery-ui?

$(document).click(function(event) {
    if($(event.target).parents().index($('#menu')) == -1 && $(event.target).parents().index($('#menu-button')) == -1) {
        if($('#menu').is(":visible")) {
            $('#menu').hide(500);
        }
    }
});

Спасибо!

Ответы [ 2 ]

0 голосов
/ 14 мая 2011

Автозаполнение ul имеет класс ui-autocomplete.Таким образом, вы можете получить это, выполнив $(".ui-autocomplete").

Однако, мой предпочтительный метод для выполнения того, что вы пытаетесь сделать, заключается в следующем:

$(".ui-autocomplete").click(function(e){
   e.stopPropagation();
   //... and maybe some other stuff
}

Это в основном остановитнажмите кнопку вверх, чтобы не вызвать щелчок документа.

0 голосов
/ 14 мая 2011

Вы можете подобрать эти предметы по их классу.Я думаю, я бы изменил это на:

    $(document).click(function(event) {
        if($(event.target).parents().index($('#menu')) == -1 &&
               $(event.target).parents().index($('#menu-button')) == -1  &&
               $(event.target).parents().index($('.ui-autocomplete-input')) == -1 &&
               $(event.target).parents().index($('.ui-autocomplete')) == -1 ) {
            if($('#menu').is(":visible")) {
                $('#menu').hide(500);
            }
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...