【问题标题】:Make focusout event ignore some elements使 focusout 事件忽略某些元素
【发布时间】:2013-10-08 08:09:48
【问题描述】:

如果您点击<input type="text" id="one" /> 并在下面的代码中出现一个“红色块”。如果你集中注意力,那么“红块”就会消失

如果“红块”或<input type="text" id="two" /> 是下一个焦点元素,我该如何使focusout 不会触发?

Demo

JavaScript

$('#one').focus(function () {
    $('#divRemove').show();
});

$('#one').focusout(function () {
    $('#divRemove').hide();
});

$('#divRemove').click(function(){
    alert($(this).text());    
});

HTML

<input type="text" id="one" />_______
<input type="text" id="two" />
<br/>
<br/>
<div id="divRemove" style="width:100px;height:100px;background:red; display:none;">remove on focus out</div>

【问题讨论】:

    标签: javascript jquery jquery-focusout


    【解决方案1】:

    您可以同时关注#one 和#two

    $('#one,#two').focus(function () {
        $('#divRemove').show();
    }).focusout(function () {
        $('#divRemove').hide();
    });
    

    DEMO

    更新

    除非你用tabindex="0"给它一个自定义索引,否则你不能真正聚焦一个div

    <div id="divRemove" tabindex="0"
    

    然后在 jQuery 中执行此操作

    $('#one,#two,#divRemove').focus(function () {
        $('#divRemove').show();
    }).focusout(function () {
        $('#divRemove').hide();
    });
    

    DEMO

    【讨论】:

    • 非常感谢 - 如果红色 div 中有其他元素会怎样呢?这将适用于它的所有孩子吗?
    • +1 尽管您可以链接事件处理程序以避免重复选择器
    • @Hello-World 我想是的,应该没问题
    • 嗨 - 你能帮忙解决这个问题吗 - 如果我将元素放在 div 中,那么它会关闭第二个焦点元素 - 谢谢jsfiddle.net/ukve6/8
    • @Hello-World 像这样oneA,oneB,oneC 把焦点放在jsfiddle.net/Alfie/ukve6/10
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 2011-09-28
    • 2010-11-17
    • 2017-02-03
    • 2020-07-23
    相关资源
    最近更新 更多