javascript - 如何检查 jquery 中的 .blur() 是否单击了特定项目

标签 javascript jquery html

当用户开始在文本框中输入内容时,我会出现一个自动完成下拉列表(我正在使用jquery mobile,但我认为这对我的问题并不重要)。我希望能够在用户单击页面上的任意位置时隐藏整个下拉列表。但是,当用户实际单击下拉列表本身时,我不想隐藏下拉列表。

有没有办法捕获点击事件以便知道点击了什么?

这是我的模糊功能:

//hide autocomplete when dropdown is not clicked
$("#search-div input").blur(function () {
    $("#autocomplete-list").hide();
});

我正在考虑以某种方式在我的模糊函数中添加一个 if 语句。这是我的伪代码:

if( dropdown clicked)
{
    run code to take text from dropdown and place in textbox
}
else
{
    hide dropdown
}

是否可以知道在模糊功能中是否单击了我的下拉菜单或单击了其他内容?当我调试我的 javascript 时,我只看到与执行模糊() 的文本框相关的事件

编辑:

这是我在单击下拉菜单时用来处理的函数:

$( document).on( "click", "#autocomplete-list li", function() {
    var selectedItem = event.target.innerHTML;
    $(this).parent().parent().find('input').val(selectedItem);
    $('#autocomplete-list').hide();
    runSearchQuery();
});

最佳答案

您可以监听任何点击,而不仅仅是模糊,然后检查点击的元素是什么。 e.currentTarget 为您提供点击的内容。

var clickHandler = function(e) {
  if ($(e.currentTarget).hasClass('dropdown')) {
    // do nothing
  } else {

    // Make sure you unregister your event every
    // time the dropdown is hidden.
    $(window).off('click', clickHandler);
    // hide
  }
}

// When the dropdown comes down, register an event on the whole page.
$(window).on('click', clickHandler);

关于javascript - 如何检查 jquery 中的 .blur() 是否单击了特定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27592147/

相关文章:

javascript - adonisjs 与 mysql 的迁移问题

javascript - 键盘上下箭头

javascript - 将数组 toString() 生成的字符串转换回数组

asp.net - JsonResult 在浏览器中显示文件下载

jquery - 使用Jquery根据body Id添加/删除类

html - 在悬停时添加字符而不移动文本

javascript - Backbone/underscore.js json 到带有每个循环的模板

javascript - 加载 AJAX 调用的 div 在 IE 或 Chrome 中不显示,在 Firefox 中工作正常

html - 使用 Css 和 HTML 创建输入文本

html - 向右浮动div