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) { $element.on('click', function (e) {
// store hash // store hash
var hash = decodeURIComponent(this.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 // prevent default anchor click behavior
e.preventDefault(); e.preventDefault();
// animate // animate
$('body, html').stop(true, true).animate({ $('body, html').stop(true, true).animate({
scrollTop: $(hash).offset().top scrollTop: $hash.offset().top
}, 100, "linear", function () { }, 100, "linear", function () {
// when done, add hash to url // when done, add hash to url
// (default click behaviour) // (default click behaviour)