首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将模糊事件绑定到实时点击事件?

如何将模糊事件绑定到实时点击事件?
EN

Stack Overflow用户
提问于 2011-06-17 18:53:11
回答 1查看 2.2K关注 0票数 4

我有这个函数:

代码语言:javascript
运行
复制
$('input#auto_results').bind('blur', function(e) {
    $('.result').bind('click', function() {
        return;
    });
    $('#results_container').hide();                                       
}); 

基本上,我希望#results_container隐藏在模糊上,除非单击了类为.result的元素。

上面的函数不起作用

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-17 20:54:57

你的代码有问题:

您要做的是在.result上的另一个事件(blur)的事件处理程序中附加一个click事件处理程序。

除了附加这个基本上什么也不做的click处理程序之外,您的代码将不会做任何事情。

简单选项:

将首先触发blur事件,然后触发.results上的click,因此这不是一个简单的情况。

你能做到的最简单的方法是:

代码语言:javascript
运行
复制
$('input#auto_results').blur(function () {
    $('#results_container').hide();
});

$('.result').click(function () {
    $('#results_container').show();
});

jsFiddle Demo

所以只需隐藏容器,单击一下,再次显示它。会导致一个小小的眨眼。

超时选项:

我能想到的另一个选择是,当blur被触发时,设置一个较小的超时,然后在.results的单击事件上,取消它。在本例中,我使用.data()函数将超时存储在body上,您可以将其存储在更符合逻辑的元素上,这只是一个演示:

代码语言:javascript
运行
复制
$('input#auto_results').blur(function () {
    var cucc=setTimeout(function () {
        $('#results_container').hide();
        $('body').removeData('blurTimeout');
    }, 100);
    $('body').data('blurTimeout', cucc);
});

$('.result').click(function () {
    var cucc=$('body').data('blurTimeout');
    if (typeof cucc != 'undefined') {
        clearTimeout(cucc);
    }
});

jsFiddle Demo

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6384691

复制
相关文章

相似问题

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