我想在使用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');
}
答案 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);
}