jQuery在外面点击隐藏div

Lee*_*Lee 2 jquery click show-hide

我想为点击的每个列表元素构建一个简单的菜单,但是一旦你点击它就隐藏了这个div.这是一些简单的代码,希望有意义.

$('.drillFolder').click(function(){
    var id = $(this).attr('data-folder');
    $(".drillDownFolder ul li > a").attr('data-id', id);
    $(".drillDownFolder").show();
});

$("body").click(function(e){
    if(e.target.className !== "drillDownFolder")
    {
      $(".drillDownFolder").hide();
    }       
});

//The hidden div
<div class="drillDownFolder" style="display:none">
    <ul>
        <li><a href="#" data-id="">Show Image</a></li>
        <li><a href="#" data-id="">Edit Image</a></li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

我知道什么是错的,因为菜单是通过.drillFolder链接显示的,然后是主体点击然后立即隐藏它.我怎么能避免这种情况.

谢谢你,如果你能提出建议

dig*_*mer 9

您可以使用stopPropagation()阻止click事件传播出.drillFolder回调.

$('.drillFolder').click(function(event){
    event.stopPropagation();
    var id = $(this).attr('data-folder');
    $(".drillDownFolder ul li > a").attr('data-id', id);
    $(".drillDownFolder").show();
});

$("body").click(function(e){
    $(".drillDownFolder").hide();
});
Run Code Online (Sandbox Code Playgroud)