jQuery专注于一个元素,然后紧接着另一个元素

时间:2016-05-16 20:11:59

标签: jquery focus

我正在尝试将焦点设置在一个元素上,然后立即将其设置回以前关注的项目。这是HTML:

@@

我试过这个:

<input id="em3" type="email" />
<p class="error" tabindex="0">Please fill out the email field</p>

和此:

$(this).next('.error').focus();
$(this).prev('input').focus();

但两者都不起作用。焦点停留在“.error”元素上。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

问题是:

  

这是因为setTimeout处理程序中的$(this)指的是   窗口,可能与引用的值不同   处理程序外的$(this)。所以你需要分配你的$(this)   外部范围

var ThisIt = $(this);
ThisIt.next('.error').focus();
setTimeout(function(){
      ThisIt.focus();
}, 2000);

<强>演示

&#13;
&#13;
$('#em3').on('click',function(){
    var ThisIt = $(this);
    ThisIt.next('.error').focus();
    setTimeout(function(){
      ThisIt.focus();
    }, 2000); 
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="em3" type="email" />
<p class="error" tabindex="0">Please fill out the email field</p>
&#13;
&#13;
&#13;

  

注意: 1st: 点击输入以查看操作.. 2nd: as @Barmar在评论中说..不需要使用prev()