【问题标题】:Smooth scrolling doesn't work with a . in ID平滑滚动不适用于 .在身份证
【发布时间】:2015-11-09 00:24:39
【问题描述】:

我正在使用脚本从这里Smooth scrolling when clicking an anchor link(更改 URL 的版本)平滑滚动。

它适用于所有锚点,但 ID 中包含 . 的锚点除外。所以链接到:

  • 1 作品

  • 1.1 不起作用

知道如何解决这个问题吗?

代码:

var $root = $('html, body');
$('a').click(function() {
    var href = $.attr(this, 'href');
    $root.animate({
        scrollTop: $(href).offset().top
    }, 500, function () {
        window.location.hash = href;
    });
    return false;
});

演示:http://bagsy.netau.net/rj/rj.html

【问题讨论】:

  • this的可能重复

标签: javascript jquery html


【解决方案1】:

id 不应以数字开头。但是如果你不想改变id,你可以使用这个代码:

var $root = $('html, body'); 
$('a').click(function() {
    var href = $.attr(this, 'href').replace('#','');
    $root.animate({
        scrollTop: $('[id="'+href +'"]').offset().top
    }, 500, function () {
        window.location.hash = href;
    });
    return false;
});

【讨论】:

  • 谢谢 - 这工作。 HTML5 现在确实允许 ID 以数字开头(尽管 HTML4 不允许)。
  • 对于 jQuery,使用任何元字符(例如 !"#$%&'()*+,./:;?@\^{| }~) 作为名称的文字部分,必须使用两个反斜杠对其进行转义:\\ (more)。在您的情况下,您也可以使用:$("#2\\.1")
猜你喜欢
  • 2019-10-02
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多