jQuery的滚动问题与scrollTop的(jQuery scrolling issues wit

2019-10-18 21:36发布

我有2个问题与滚动,我想这将是更容易问他们俩在一个职位。

我问之前,下面是与问题我jQuery代码IM。

$("a").click(function() {
    if(this.hash){
        $("#main").animate({
            scrollTop : $("h3[name="+this.hash.substr(1)+"]").position().top - 120
        },2000,"easeOutExpo");
    }
});

现状:我在我的网页已事情基本上是我有一对夫妇列出了侧面菜单。 每个列表中的每一项都链接到停泊在我的主要DIV部分,还是我的“内容”部分。 当单击列表项,上面的代码运行,它滚动到其中一个锚点。

问题1:当我在列表中的一个项目点击,它向下滚动到工作就好了一个锚。 但是,当同一项目再次点击,主要区域滚动备份到div的顶部。 我的想法来解决这个问题是检查当前的“滚动”的div位置,然后不允许如果该位置没有因为第一次点击改变了代码再次运行,但我不能得到那个工作。 关于如何解决这个问题有什么建议?

问题2:同样如上所述,当我在一个列表中的项目点击向下滚动到锚。 那么,什么我希望能够到的就是点击一个不同的列表项,并把它滚动到该位置。 问题是,当我在不同的列表项单击,则滚动到一些随机的位置在主DIV,位置我还没有锚定呢。 任何人都可以解释我是如何能做到这样我就可以从锚滚动到锚?

注:所以我知道哪一个你指的是请具有您解释上述问题1或问题2响应。 谢谢

编辑:感谢ROKO的帮助下,我得到它的工作。 对于未来的观众这里是一个工作演示的小提琴: http://jsfiddle.net/TsUcc/3/以下是最终的jQuery代码是什么样子

$("a").click(function( e ) {
    e.preventDefault();

    if(this.hash){

        var target = '#'+ this.hash.substr(1);
        var destination = $(target).offset().top - 10;

        $('#main').stop().animate({
            scrollTop : '+=' + destination
        }, 1000);
    }
});

Answer 1:

现场演示

问题1:

你可能使用类似: <a href="#goto">goto</a>和你没有阻止这简直是通过事件传递给做浏览器的默认行为click处理程序,如:

$("a").click(function( e ) {
     e.preventDefault();
     // .....
});

第2期

HTML元素的position ,你正在使用的一个元素相对于它的定位的父元素的只是被动的位置。 这意味着一个元素可以有即的位置: 30 ,即使它在你的页面的底部。
为了解决这个问题使用

offset().top

另外值得一读: https://developer.mozilla.org/en-US/docs/Web/API/element.getBoundingClientRect

第3期

H3元素应该有一个name属性。
使用一个ID用于这一目的。
为什么?
如果你有一个很好的网站,你必须在页面底部的一些性感的东西,我可以通过引用您的网页和链接发送给我的朋友ID在像一个链接:

example.com#bottomLady

他会马上得到我的想法,而无需滚动您的页面一路下跌。



文章来源: jQuery scrolling issues with scrollTop