如何滚动到jQuery中的元素?

Pra*_*ant 68 html javascript jquery focus

我在JavaScript中完成了以下代码,将焦点放在特定元素上(branch1是一个元素),

document.location.href="#branch1";
Run Code Online (Sandbox Code Playgroud)

但是因为我也在我的网络应用程序中使用jQuery,所以我想在jQuery中执行上面的代码.我试过但不知道为什么它不起作用,

$("#branch1").focus();
Run Code Online (Sandbox Code Playgroud)

上面的jquery(focus())代码不适用于div,而如果我尝试使用textbox相同的代码,那么它的工作,

请告诉我,如何使用jQuery将重点放在div elemnt上?

谢谢!

Ban*_*ing 110

对于我的问题这个代码工作,我不得不导航到页面加载上的锚标记:

$(window).scrollTop($('a#captchaAnchor').position().top);
Run Code Online (Sandbox Code Playgroud)

就此而言,您可以在任何元素上使用它,而不仅仅是锚标记.

  • 而不是"$(this).scrollTop",你应该使用"$(window).scrollTop".当"this"恰好与"window"相同时,第一次只能工作. (8认同)

Use*_*234 50

就像@ user293153我只是发现了这个问题而且似乎没有得到正确回答.

他的回答是最好的.但您也可以为元素设置动画.

$('html, body').animate({ scrollTop: $("#some_element").offset().top }, 500);
Run Code Online (Sandbox Code Playgroud)

  • 如果你在.live('click')中使用它并且你注意到窗口跳转到页面顶部,添加一个"return false"作为最后一个语句,它解决了IE和Chrome的问题:D (2认同)
  • 请注意,虽然在选择器中似乎不需要"html",但Firefox不会在没有它的情况下进行滚动.所以$('html,body')有效,$('body')不起作用(仅FF,在IE和Chrome中它可以正常工作). (2认同)

MCu*_*elo 37

你可以像这样扩展jQuery功能:

jQuery.fn.extend({
scrollToMe: function () {
    var x = jQuery(this).offset().top - 100;
    jQuery('html,body').animate({scrollTop: x}, 500);
}});
Run Code Online (Sandbox Code Playgroud)

然后:

$('...').scrollToMe();
Run Code Online (Sandbox Code Playgroud)

简单 ;-)


CMS*_*CMS 32

检查jQuery.ScrollTo,我认为这是你想要的行为,请查看演示.

  • 链接过时而不是真正的jQuery,而是一个jQuery插件. (3认同)
  • 这个答案首先出现在Google上.从新的jQuery翻新开始,新的正确的URL是http://plugins.jquery.com/scrollto/ (2认同)
  • 即使那个地址现在已经过时了.作者的Github回购在https://github.com/flesler/jquery.scrollTo (2认同)