Как устранить конфликт между событием клика и событием клика, запускаемым программным способом - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь удалить элемент ul при щелчке элемента body и игнорировать, если цель щелчка находится на самом элементе ul, в противном случае нажмите кнопку execute и элемент ul будет удален. Все работает хорошо, но программный щелчок с другого js удаляет ul после его выполнения, что является проблемой. Ul должен быть удален только взаимодействием с пользователем. Пожалуйста, помогите мне разрешить этот конфликт.

<div class="search-input">
     <ul>
    <li><a href='#'>1</a></li>
    <li><a href='#'>2</a></li>
    </ul>
</div>

$(document).on('click','body', function(e) {
    if(!$(e.target).closest(".search-input").find('ul').length > 0) {
        $('.search-input ul').remove();
    }   
});

// программный клик-триггер $(hotspot).trigger("click", true);

Вышеуказанное программное событие щелчка выполняет событие щелчка тела, которое не требуется.

1 Ответ

0 голосов
/ 21 января 2019

Поставь это условие.

is_click  = true;
$(document).on('click','body', function(e) {
if(is_click){
    if(!$(e.target).closest(".search-input").find('ul').length > 0) {
        $('.search-input ul').remove();
    }

    if(!$(e.target).closest(".input-search").find('ul').length > 0) {
        $('.input-search ul').remove();
    } 
}  
});

и для программного триггера клика

is_click  = false;
$(hotspot).trigger("click", true);
is_click  = true;
...