繁体   English   中英

jQuery .focus()回调不起作用

[英]jQuery .focus() callback is not working

我只是不明白,为什么这种.focus回调方式不起作用?

$('a.focus').click(function(){
    $('form input:first').focus(function(){
        console.log('done focus');         
    });
});  

现场演示: http//jsfiddle.net/SHxbj/

我在这里做错了什么?

为什么不这样做:

$('a.focus').click(function() {
    $('form input:first').focus();
});
$('form input:first').focus(function() {
    console.log('focused');
});​

第一个块绑定链接上的单击以将光标聚焦在输入字段中,第二个块将焦点事件绑定在输入字段上并将消息发送到控制台。

jsFiddle例子

$('form input:first').focus(function(){
    console.log('done focus');         
});

该代码块将事件绑定到第一个表单输入,而不是在单击链接时执行焦点回调。 您的代码按预期工作,而不是您可能正在思考的方式。 尝试单击该链接,然后单击第一个输入。

你可能想要这个:

$('form input:first').focus();
console.log('done focus');

您的代码将回调绑定到focus事件,但实际上并不关注元素。 您可以将其保留为回调并手动聚焦元素,或者您可以在焦点后轻松触发它:

编辑; 感谢@ GNi33指出重复绑定!

var $input = $('form input:first');
$input.focus(function(){
    console.log('done focus');         
});

$('a.focus').click(function(){
    $input.focus();
});  
$('a.focus').click(function(){
    $('form input:first').focus(function(){
        console.log('done focus');         
    }).focus();
});  
​

小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM