2015-11-08 23 views
0

我正在使用脚本从这里顺利滚动Smooth scrolling when clicking an anchor link(URL被更改的版本)。平滑滚动不适用于a。在ID

它适用于除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

+0

的[这]可能的复制(http://stackoverflow.com/questions/350292/how-do-i-get- jquery-to-select-elements-with-a-period-in-their-id) – trincot

回答

0

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; 
}); 
+0

谢谢 - 这工作。 HTML5实际上确实允许ID以数字开头(尽管HTML4没有)。 –

+0

使用jQuery,使用任何元字符(如**!“#$%&'()* +,。/ :; <=>?@ \^{|}〜**)作为字面部分一个名字,它必须用两个反斜杠进行转义:\\ [[more](http://api.jquery.com/category/selectors/))在你的情况下,你也可以使用:'$(“# 2 \\ 1" )'。 –