如何消除点击事件和以编程方式触发的点击事件之间的冲突

时间:2019-01-21 07:09:06

标签: javascript jquery onclick click

我试图在单击body元素时删除ul元素,并忽略click目标是否在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 :(得分:0)

设置此条件。

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;