Fix the element selector in smoothHashScroll might contain special characters and cause the Syntax error

This commit is contained in:
Wu Cheng-Han 2016-09-18 16:28:07 +08:00
parent c22791610c
commit b708a72873
1 changed files with 5 additions and 2 deletions

View File

@ -635,12 +635,15 @@ function smoothHashScroll() {
$element.on('click', function (e) {
// store hash
var hash = decodeURIComponent(this.hash);
if ($(hash).length <= 0) return;
// escape special characters in jquery selector
var $hash = $(hash.replace(/(:|\.|\[|\]|,)/g, "\\$1"));
// return if no element been selected
if ($hash.length <= 0) return;
// prevent default anchor click behavior
e.preventDefault();
// animate
$('body, html').stop(true, true).animate({
scrollTop: $(hash).offset().top
scrollTop: $hash.offset().top
}, 100, "linear", function () {
// when done, add hash to url
// (default click behaviour)