【问题标题】:jQuery scrollTop animation returns Uncaught TypeErrorjQuery scrollTop 动画返回 Uncaught TypeError
【发布时间】:2013-11-03 14:03:40
【问题描述】:

我的 jQuery 代码(如下)有问题,我不明白为什么?

我正在尝试为我的网站提供scrollTop 动画,它可以正常工作,但是当我想使用ul li ul li a 星座时,即使 jQuery 触发它也会卡住,并且我收到如下错误:

Uncaught TypeError: Cannot read property 'top' of undefined

我对我的代码和完全相同的情况又一次摆弄:当我点击例如 href="#5.1"

更新代码:

$('ul li a').click(function(event) {
    var location = $(this).attr('href');
    $('html, body').animate({
        scrollTop : $(location).offset().top -10
    }, 800, function () {
       var location 2 = location.replace( "\\" ,"");
    window.location.hash = location2;
});
    return false;
});

jsFiddle Example

【问题讨论】:

    标签: javascript jquery html jquery-animate


    【解决方案1】:

    您的解决方案很简单!你必须转义.,就像这样:

    <a href="#5\.1">Punkt 10: Header und Footer ohne ID ansprechen</a>
    

    Online Working Example

    使用任何元字符(例如 !"#$%&'()*+,./:;?@[]^`{|}~ ) 作为名称的文字部分,它必须 被逃脱。

    Selectors | jQuery API Documentation

    编辑 1:

    如果您想避免在实际 URL 中出现 \,只需尝试将其删除,只需将简单的 regex 应用于您的位置变量:

    var location = location.replace(/\\/g,"");
    

    【讨论】:

    • 嗨,它工作得很好 ^^ 但现在我在哈希之后有 s \ 使用后如何让 javascript 替换 \?这不起作用'location.replace("\","");'
    • 不确定您的意思?你能发布一个例子到 jsFiddle 吗?
    • goo.gl/8Yyhjf 这里是我的网站托管(暂时)如果你点击第 5 点 a) 你会在你的 URL 后面看到这个:#5\.1 我想要它成为 #5.1 我已经编辑了我的代码(向上)
    猜你喜欢
    • 2013-05-04
    • 1970-01-01
    • 2013-06-28
    • 2018-10-08
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多