smsc banner 468x60smsc banner 728x90smsc banner 930x180kwork banner 468x60kwork banner 728x90kwork banner 930x180flexbe banner 468x60flexbe banner 728x90flexbe banner 930x180

Как определить клик вне элемента с помощью jQuery

Вы можете использовать свойство event.target для обнаружения щелчка вне элемента, например раскрывающегося меню. Это свойство возвращает элемент DOM, инициировавший событие.

Чтобы проиллюстрировать, как это работает, мы создали раскрывающееся меню в следующем примере, которое будет скрывать и показывать вам подсказку, когда вы щелкаете за пределами области меню с помощью jQuery.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery Detect Click Outside an Element</title>
<style>
    body{
        font: 15px Arial, sans-serif;
    }
    ul{
        padding: 0;
        list-style: none;
        background: #f2f2f2;
        border: 1px solid #dedede;
    }
    ul li{
        display: inline-block;
        position: relative;
        line-height: 21px;
    }
    ul li a{
        display: block;
        padding: 8px 25px;
        color: #333;
        text-decoration: none;
    }
    ul li a:hover{
        color: #fff;
        background: #939393;
    }
    ul.dropdown-menu{
        min-width: 100%; /* Устанавливаем ширину раскрывающегося списка */
        background: #f2f2f2;
        display: none;
        position: absolute;
        z-index: 999;     
        left: 0;
    }
    ul.dropdown-menu li{
        display: block;
        white-space: nowrap;
    }
    p.hint{
        height: 25px;
    }
</style>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script>
$(document).ready(function(){
    // Переключение раскрывающегося меню при нажатии элемента триггера
    $(".dropdown-toggle").click(function(){
        // Скрываем другие раскрывающиеся меню в случае нескольких раскрывающихся списков
        $(".dropdown-menu").not($(this).next()).slideUp("fast");
        
        // Переключаем текущее раскрывающееся меню
        $(this).next(".dropdown-menu").slideToggle("fast");
        
        // Отображение подсказки
        $(".hint").html("A click <b>inside</b> the dropdown is detected.");
    });
 
    // Скрываем раскрывающееся меню при нажатии снаружи
    $(document).on("click", function(event){
        if(!$(event.target).closest(".dropdown").length){
            $(".dropdown-menu").slideUp("fast");
            
            // Отображение подсказки
            $(".hint").html("A click <b>outside</b> the dropdown is detected.");
        }
    });
});
</script>
</head>
<body>
    <p class="hint"><!-- Здесь будет вставлен текст подсказки --></p>
    <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">About</a></li>
        <li class="dropdown">
            <a href="#" class="dropdown-toggle">Services ▾</a>
            <ul class="dropdown-menu">
                <li><a href="#">Web Design</a></li>
                <li><a href="#">Web Development</a></li>
                <li><a href="#">Graphic Design</a></li>
            </ul>
        </li>
        <li><a href="#">Contact</a></li>
    </ul>
</body>
</html>

Вам следует избегать использования метода stopPropagation() в таких ситуациях, поскольку он нарушает нормальный поток событий в дереве DOM. Это также считается плохой практикой.

Подробнее см. Руководство по распространению событий JavaScript, чтобы узнать, как события распространяются в дереве DOM.

kwork banner 480x320kwork banner 728x90kwork banner 120x600etxt banner 480x320etxt banner 728x90etxt banner 120x600skillbox banner 480x320skillbox banner 728x90skillbox banner 120x600

Читайте также

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.

Похожие посты

Как обновить страницу с помощью jQuery

Вы можете просто использовать JavaScript-метод location.reload() для обновления или перезагрузки страницы. Этот метод дополнительно принимает логический параметр true или false. Если указан параметр true, это вызывает постоянную перезагрузку страницы с сервера. Но, если установлен false (по умолчанию) или не указан, браузер может перезагрузить страницу из своего кеша. Давайте посмотрим на пример, чтобы понять, как работает…
Подробнее

Как изменить CSS-свойство display на none или block с помощью jQuery

Вы можете использовать jQuery-метод css(), чтобы изменить значение свойства CSS display на none, block или любое другое значение. Метод css() применяет правила стиля непосредственно к элементам, то есть к встроенным. Следующий пример изменит отображение элемента DIV при нажатии кнопки: В качестве альтернативы, если вы беспокоитесь о начальном значении свойства display элемента, но хотите переключаться между…
Подробнее

Как отображать и скрывать элементы div на основе раскрывающегося списка <select> в jQuery

В следующем примере показано, как отображать и скрывать элементы <div> на основе раскрывающегося списка или выбранного параметра в поле <select> с помощью jQuery-метода change() в сочетании с методами show() и hide(). Блоки <div> в этом примере по умолчанию скрыты с помощью CSS-свойства display, для которого установлено значение none.
Подробнее