I found that if I click one of the sections in menubar, the browser address bar displays #[object%20Object]
. But it didn't influence scroll-to-section
.
Partial code at reference:
<li class="scroll-to-section"><a href="#top" class="active">Home</a></li>
<li class="scroll-to-section"><a href="#services">Services</a></li>
<li class="scroll-to-section"><a href="#about">About</a></li>
<li class="scroll-to-section"><a href="#users">Evaluations</a></li>
<li class="scroll-to-section"><a href="#newsletter">Newsletter</a></li>
JavaScript Code:
$('.scroll-to-section a[href*=\\#]:not([href=\\#])').on('click', function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
if (target.length) {
var width = $(window).width();
if(width < 991) {
$('.menu-trigger').removeClass('active');
$('.header-area .nav').slideUp(200);
}
$('html,body').animate({
scrollTop: (target.offset().top) + 1
}, 700);
return false;
}
}
});
$(document).ready(function () {
$(document).on("scroll", onScroll);
//smoothscroll
$('.scroll-to-section a[href^="#"]').on('click', function (e) {
e.preventDefault();
$(document).off("scroll");
$('.scroll-to-section a').each(function () {
$(this).removeClass('active');
})
$(this).addClass('active');
var target = this.hash;
menu = target;
target = $(this.hash);
$('html, body').stop().animate({
scrollTop: (target.offset().top) + 1
}, 500, 'swing', function () {
window.location.hash = target;
$(document).on("scroll", onScroll);
});
});
});
I tried to update jQuery, but it didn't work.
window.location.hash = target;
this is the problem. you can't set location.hash to an element. It needs to be an a name
or id
in the document. A string. Not an object.