Для плавный прокрутки использую данный код:
$(document).ready(function() {
$(".navbar-default ul li a[href^='#']").on('click', function(e) {
// prevent default anchor click behavior
e.preventDefault();
// animate
$('html, body').animate({
scrollTop: $(this.hash).offset().top
}, 400, function() {
// when done, add hash to url
// (default click behaviour)
window.location.hash = this.hash;
});
});
При клике на ссылку в адресной строке добавляется #undefined
вместо значения hash
этой ссылки.
Верстка
this
внутри функции, вызываемой при завершении анимации, указывает на элемент, для которого была вызвана анимация. В данном случае, сначала на html
, затем на body
.
Имеет смысл сохранить a
в отдельную переменную перед вызовом анимации. Например, так: var that = this;
, после чего использовать window.location.hash = that.hash;
Итоговый код (я убрал html
из html, body
, чтобы функция вызывалась лишь один раз):
$(document).ready(function()
{
$(".navbar-default ul li a[href^='#']").on('click', function(e)
{
e.preventDefault();
var that = this;
$('body').animate({
scrollTop: $(this.hash).offset().top
}, 400, function() {
window.location.hash = that.hash;
});
});
});
Пример в fiddle.
В том, что вы пытаетесь взять значение там, где его нет:
window.location.hash = this.hash;
^^^^^^^^^
this
в данном контексте - просто HTML-элемент, у него нет свойства hash
. Вы можете получить адрес (href) ссылки, по которой кликнули, следующим образом:
window.location.hash = $(this).attr('href');
Это создаст jQuery-обертку над текущим элементом, а затем получит атрибут href. не забудьте также заменить и более ранние вхождения.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
При загрузке любых сайтов, в исходном коде обнаружил одну и туже строку в блоке head
Всем привет! Хочу добавить вкладку инстаграма в виджет на wordpressДелаю по аналогии с контактом, есть пример как должно выглядеть, но пока не пойму...