隐藏所有元素onblur jquery但是在焦点时不要隐藏它

时间:2013-11-14 07:34:02

标签: javascript jquery

我有一个具有相同类“z”的多个输入

<input type=text class=z>
<input type=text class=z>
<input type=text class=z>
<input type=text class=z>

我的jquery是

$(document).ready(function(){
    $('.z').blur(function(){
        $('.z').hide();
    });
});

如果我在所有这些元素中失去焦点,我想要隐藏所有这些元素。但我不想隐藏它们,而我正在关注这些元素中的每一个。问题是,在输入第一个元素后,当我转到下一个元素时,它会自动隐藏。我该怎么办?

1 个答案:

答案 0 :(得分:2)

使用$(this).show();使当前元素可见并隐藏其余元素。

$(document).ready(function(){
    $('.z').blur(function(){
        $('.z').hide();
        $(this).show();
    });
});

您可以使用.not {/ 1}等$('.z').not(this).hide();来隐藏元素来从选择器中排除当前元素

$(document).ready(function(){
      $('.z').blur(function(){
            $('.z').not(this).hide();       
      });
});
根据OP中的更改

修改

如果元素丢失焦点,您可以将属性添加到存储,并使用它确定所有元素是否都失去了焦点。

<强> Live Demo

$(document).ready(function(){
    $('.z').blur(function(){
        $(this).attr('lostFocus', 'true');
        if($('.z').length == $('.z[lostFocus="true"]').length)
             $('.z').hide();
    });
});

注意为html元素的属性添加引号,如下所示。

<input type="text" class="z">
<input type="text" class="z">
<input type="text" class="z">
<input type="text" class="z">