如何在点击屏幕上的任何位置时隐藏特定的div

时间:2017-04-05 10:42:59

标签: javascript jquery html css

我有一个搜索结果div,它包含根据用户搜索的搜索结果列表项。但我希望在用户点击屏幕上的任何位置时隐藏该结果div。

这是我的搜索div代码:

<div id="user_search">
    <div class="inpt-head-place" style="width:9em;">
        <?php echo form_open( '',[ 'class'=>' navbar-left navbar-change','id'=>'search_form']) ?>
        <?php echo form_input([ 'type'=>'text','class'=>'form-control form-media search_user_bar','placeholder'=>'Search Here','name'=>'search']); ?>
    <div id="search_result" class="search_result"> </div>

    </div>
    <div class="inpt-head-place" style="width: 20px;">
        <button class="btn btn-default btn-resize" type="submit" name="submit" id="submit_here"> <i class="fa fa-search"></i> </button>
        <?php echo form_close(); ?>
    </div>
</div>

以下是搜索栏的Snap及其结果:

And here is a Snap of search Bar with their results

请建议我..谢谢

3 个答案:

答案 0 :(得分:0)

您可以通过将点击绑定到documentbody来检查点击的元素或任何子元素是单击的元素还是单击的子元素:

$(document).on('click', function(e) {
  if (!$('#search_result').is(e.target) && $('#search_result').has(e.target).length === 0){
    $('#search_result').hide();
  }
});

答案 1 :(得分:0)

检查以下代码,当您点击search_result外部时,它会隐藏search_result div。

$(document).mouseup(function (e) {
    var container = $("#search_result"); //ID of dic you want to hide 
    if (!container.is(e.target) // if the target of the click isn't the container...
        && container.has(e.target).length === 0) // ... nor a descendant of the container
    {
        container.hide();
    }
});

答案 2 :(得分:0)

你可以使用JS来执行此操作,方法是将div包裹在div中(或者只使用正文),然后在该div上添加一个on click事件监听器,如果单击正文则关闭搜索结果。 像是,

document.getElementById('body-div').addEventListener("click", function(){
    //set style of search result to display: none or hide in some reasonable way
});