0

考虑以下 JS 代码:

<script type="text/javascript">

$(function() {
    // Check if landing on the page with a hash
    if (window.location.hash.length) {
        $('html,body').animate({scrollTop: 200}, 100);
        return false;
    }

    // Same-page anchors
    $('a[href*=#]').click(function() {
        // ... find the target based on the div and animate the scrollTop property again
       }
    });
}); 
</script>

它的作用是首先检查是否登陆带有#anchor 的页面,或者用户是否单击同一页面的#anchor 并简单地为具有相应ID 的目标div 设置动画。

问题是这两个交替工作:如果您登陆一个带有井号的页面,该页面将动画到 div ID,但随后的同一页面链接不会被绑定的“点击”事件拦截(I'我也试过用 live() 绑定它,没有区别)

如果您使用干净的 URL 登陆页面,链接将再次起作用。我究竟做错了什么?

4

1 回答 1

1

为什么返回false?这没有任何意义,因为在“就绪”事件处理程序中,没有可以阻止的默认行为或会冒泡的 DOM 树。此外,它还可以防止执行以下语句(特别是事件处理程序与链接的绑定)。

if (window.location.hash.length) {
    $('html,body').animate({scrollTop: 200}, 100);
    return false;  // <-- remove this line!
}
于 2012-06-11T17:13:34.137 回答