如何在某些选择器上禁用jQuery模糊事件

Kir*_*ahi 9 html javascript jquery

我有以下jQuery和HTML,当输入的焦点丢失时隐藏搜索结果.

#searchResult#searchResult点击元素时,此代码用id隐藏我的div .我想在单击div上的元素时禁用模糊#searchResult.基本上,我想<div id="searchResult">在焦点丢失时隐藏并显示焦点何时聚焦.我怎样才能做到这一点?

$(document).on("blur", "#txtSearchTerm", function () {
    $('#searchResult').hide();
});

$(document).on("focus", "#txtSearchTerm", function () {
    $('#searchResult').show();
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input id="txtSearchTerm" type="text">

<div id="searchResult">
    <ul>
        <li>
            <a href="http://www.google.com">
                <div class="title">Google.com</div>
                <div class="content">Click here</div>
            </a>
        </li>
        <li>
            <a href="http://www.google.com">
               <div class="title">Google.com</div>
               <div class="content">Click here</div>
           </a>
        </li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

<div id="searchResult"> 将在每次点击其中的元素时隐藏.

小智 5

您可以使用以下代码简单地关闭模糊事件。

$(document).off("blur", "#txtSearchTerm");
Run Code Online (Sandbox Code Playgroud)


Sil*_*fer 4

您不需要blur事件来实现这一点:

$(document).click(function(e) {
    if ($(e.target).is("div") && $(e.target).has("ul > li")){
        $('#searchResult').show()
    }
    else $('#searchResult').hide()
    
    if ($(e.target).is(':focus')){
        $('#searchResult').show()
    }
})
Run Code Online (Sandbox Code Playgroud)
#searchResult{
    margin-top: 50px;
    border: 2px solid black;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input id="txtSearchTerm" type="text">
Click out the input to hide div
<div id="searchResult">
    <ul>
        <li>
            <a href="http://www.google.com">
                <div class="title">Google.com</div>
                <div class="content">click here</div>
            </a>
        </li>
        <li>
            <a href="http://www.google.com">
               <div class="title">Google.com</div>
               <div class="content">click here</div>
           </a>
        </li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)