首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在模糊上隐藏元素,除非单击该元素?

如何在模糊上隐藏元素,除非单击该元素?
EN

Stack Overflow用户
提问于 2012-03-29 19:39:41
回答 4查看 2.5K关注 0票数 2

我正在尝试用jQuery建立一个自动完成的搜索表单.

当字段没有焦点时,我想隐藏搜索结果div,但是如果有人试图单击结果中的链接,他们就无法隐藏,因为搜索字段失去了焦点。

以下是代码:

HTML:

代码语言:javascript
复制
<form>
  <input type='search' id='search' placeholder='search' />
</form>
<div id='search-results' style='display:none'>
  <ul>
    <li><a href='#'>Example Result</a></li>
  </ul>
</div>

JavaScript

代码语言:javascript
复制
$("#search").keyup(function() {
  query = $(this).val();
  if(query.length > 2) {
    $("#search-results").html(get_search_results(query)).show();
  } else {
    $("#search-results").hide();
  }
});

$("#search").focus(function() {
  if($(this).val().length > 2) {
    $("#search-results").show();
  }
}); 

$("#search").blur(function() {
  $("#search-results").hide(); //makes it impossible to click results
});

我如何完成隐藏的结果时,没有使用,但仍然是可点击的?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-29 19:51:08

我建议设置一个函数来检查鼠标是否在搜索结果div上。就像这样。

代码语言:javascript
复制
// Have a global variable
var hovered = false;

然后有一个在滚动时更改它的函数。

代码语言:javascript
复制
$("#search-results").bind("mouseover",function() {
    hovered = true;
}).bind("mouseout",function() {
    hovered = false;
});

然后在函数中检查变量是否为true。

代码语言:javascript
复制
$("#search").blur(function() {
    if(!hovered) {
        $("#search-results").hide();
    }
    else {
        $("#search-results").bind("mouseup",function() {
            $("#search-results").hide();
        })
    }
});

希望这有帮助

票数 5
EN

Stack Overflow用户

发布于 2012-03-29 20:28:00

也许,就像:

代码语言:javascript
复制
$('#search').data("wait_a_bit", false);
$("#search").blur(function()
{
    if (!$(this).data("wait_a_bit"))
       $("#search-results").hide();
});

$("#search-results").mousedown(function() {
    $("#search").data("wait_a_bit", true);
});

$("#search-results").bind("mouseup mouseleave", function() {
    if ($("#search").data("wait_a_bit"))
    {
        $("#search").data("wait_a_bit", false);
       $("#search-results").hide();
    }
});
票数 1
EN

Stack Overflow用户

发布于 2012-03-29 19:50:00

尝试将所有元素放入表单中。像这样的事情:

代码语言:javascript
复制
<div id="wrapper">
    <form>
      <input type='search' id='search' placeholder='search' />
    </form>
    <div id='search-results' style='display:none'>
      <ul>
        <li><a href='#'>Example Result</a></li>
      </ul>
    </div>

并将隐藏代码更改为:

代码语言:javascript
复制
$("#search").mouseout(function() {
  $("#search-results").hide(); //makes it impossible to click results
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9932300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档