平滑的页面滚动器不适用于其他语言(即更改的 URL 结构)

Smooth page scroller not working for alt languages (i.e. altered URL structure)

我有一个 js,当单击更多按钮时,它可以使页面平滑滚动到另一个位置。

它可以工作,但如果为该网站选择了另一种语言则不会。当用户将语言更改为西班牙语时,URL 会更改为 www.example.com/ES。这似乎打破了适用于 www.example.com.

的平滑滚动

在西班牙语中单击 more link 似乎完全重新加载页面,在滚动位置,但没有平滑滚动。

这是我的js。如何在平滑滚动中包含替代语言 url?

(function($){

        $(function() {
    $('a[href*=#]:not([href=#])').click(function() {
        if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {

            var target = $(this.hash);
            target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
            if (target.length) {
                $('html,body').animate({
                    scrollTop: target.offset().top
                }, 1000);
                return false;
            }
        }
    });
});

})(jQuery);

编辑:作为参考,脚本在 Wordpress 中排队functions.php,我使用的语言插件称为 qTranslate

尝试更改此部分:

$('a[href*=#]:not([href=#])')

此选择器正在选择所有标签,请尝试向其添加 class。像这样:

$('.more a[href*=#]:not([href=#])')

此函数应该在您的 .js 文件中,而不是在 functions.php 文件中。如果您有不同的语言,则不应影响您拥有的脚本。

好的,我终于让它工作了。我使用的语言插件要求所有受支持的非主要语言都有根 url 的缩写。例如西班牙文页面可能看起来像 example.com/ES/contact.

我使用的锚点不小心将西班牙语用户重定向回主要语言,因为它省略了相对 URL 的 /ES/ 部分。我只是将锚点 href 元素从 <a href="/#more" 更改为 <a href="[:en]/#more[:ES]/ES/#more[:]",以包含语言插件用于根据所使用的语言呈现不同元素的挂钩。

所以解决方案是在 HTML 实现中,我调用的 javascript 文件没有问题。

示例位于 http://www.thelucyfoundation.com