如何在动画后设置焦点

时间:2012-08-31 07:16:44

标签: jquery jquery-ui

我想在使用div.focus和animate()滚动到页面顶部之后,将焦点设置为id的文本框,让我们说txtName。

是否有一个功能指定在像document.ready在document.ready之后执行的动画之后进行聚焦?

我用来滚动的代码如下。

$(".gototop").click(function(){ 
    var focusElement = $("#contents"); 
    $(focusElement).focus(); 
    ScrollToTop(focusElement); 
}); 

function ScrollToTop(el) { 
    $('html, body').animate({ scrollTop: $(el).offset().top - 50 }, 'slow');           
} 

2 个答案:

答案 0 :(得分:9)

您可以将焦点设置为动画回调中的元素,这样在动画完成时它将获得焦点:

function ScrollToTop(el) { 
    $('html, body').animate({ 
        scrollTop: $(el).offset().top - 50 }, 
    'slow', function() {
        $("#txtName").focus();
    });           
} 

如果el是您想要关注的元素,则可以使用传递的变量而不是#txtName

答案 1 :(得分:2)

animate函数接受一个动画完成后将执行的回调。你可以这样做:

$(".gototop").click(function(){ 
    var focusElement = $("#contents");
    ScrollToTop(focusElement, function() { focusElement.focus(); }); 
}); 

function ScrollToTop(el, callback) { 
    $('html, body').animate({ scrollTop: $(el).offset().top - 50 }, 'slow', callback);
}