当前位置: 首页 > 知识库问答 >
问题:

如何在特定选择器上禁用jQuery模糊事件

海灵均
2023-03-14

我有以下jQuery和超文本标记语言,当输入的焦点丢失时,它们会隐藏搜索结果。

单击#searchResult上的元素时,此代码隐藏id为#searchResult的我的div。我想在单击#searchResultdiv上的元素时禁用模糊。基本上,我想隐藏

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

$(document).on("focus", "#txtSearchTerm", function () {
    $('#searchResult').show();
});
<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>


共有3个答案

谢唯
2023-03-14

您不能这样做,因为模糊是在单击子对象之前触发的。因此,您需要在文档上添加一个事件处理程序来关闭结果。当有人单击结果时,您将取消该事件。大概是这样的:

$('#txtSearchTerm').click(function(e) {
  $('#searchResult').show();
  e.stopPropagation();
});

$(document).click(function(e) {
    $('#searchResult').hide();
});

$('#searchResult').click(function(e) {
  e.stopPropagation();
});
<script src="//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>
冷越泽
2023-03-14

您不需要通过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()
    }
})
#searchResult{
    margin-top: 50px;
    border: 2px solid black;
}
html prettyprint-override"><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>
酆晔
2023-03-14

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

$(document).off("blur", "#txtSearchTerm");
 类似资料:
  • 问题内容: 我正在尝试使用JQuery Ui禁用特定日期。但是,我没有运气,这是我的代码: 实例化datepicker对象 获取日历中要禁用的日期 它似乎没有用,我知道如何解决这个问题。干杯。 问题答案: 好像您在一个输入上调用了两次。很难遵循您的代码,但是如果您重新组织代码并删除第二个调用,那么一切都会正常进行:

  • 我将html写成 现在我希望如果选项是1,那么它应该被选择为 请帮帮我!!!

  • 问题内容: 我想在的日期选择器中禁用特定的日期。 我正在使用CSS作为组件。 我要禁用的日期将根据组合中先前值的选择而动态更改。 我相信应该可以,尽管不确定。 我怎样才能做到这一点 ? 问题答案: 我假设您正在使用Angular-UI中的指令。该属性使您可以禁用某些日期(例如,周末)。看到这个笨蛋http://plnkr.co/edit/gGAU0L?p=preview 如果要基于选择动态禁用日期

  • 问题内容: jQuery或jQuery-UI是否具有禁用给定文档元素的文本选择功能? 问题答案: 在jQuery 1.8中,可以按照以下步骤进行操作:

  • 如何在两条准则(即两个单词)之间选择文本? 示例: Lorem ipsum dolor sit amet,concetetur adipiscing elit。连续威尼斯整数。Suspendisse在pretium elit,id euismod odio。Quisque sem lorem、laoreet et feugiat eget、elementum eu felis。努克·奎斯·尼西·泰

  • 我正在使用日期选择器和选定的datePicker模式作为时间。当我加载日期选择器时,它显示的是当前时间。但我想设置默认时间总是5:00 PM。 我试过下面的方法,但对我不起作用。 请帮我把时间默认为下午5点。谢谢.