2015-04-26 2 views
0

У меня есть этот код для гладкой прокрутки:JQuery Плавная прокрутка не работает

$(".navbar-nav li a[href^='#']").on('click', function(e) { 
    e.preventDefault(); 
    $('html, body').animate({ 
     scrollTop: $(this.hash).offset().top 
    }, 1000); 
}); 

, который работает для ссылок как <li><a href="#intro">Intro</a></li> но это, кажется, не работает для ссылок, как: <li><a href="#home#intro">Intro</a><li> Любая идея, как сделать более поздняя ссылка работает?

+0

Элемент с 2 идентификаторами? – undefined

+0

Идентификатор только один: введение, я использую дополнительные # в URL-адресе в качестве обходного пути для своего углового приложения –

+0

Какое обходное решение это? Этот селектор не будет выбирать какой-либо элемент. – undefined

ответ

0

Двойной хеш - не очень хорошая идея. Я думаю, вы должны использовать атрибут данных для поиска идентификатора.

Кстати, вы можете попробовать это и сохранить #intro в качестве последнего значения!

jQuery(".navbar-nav li a[href^='#']").on('click', function(e) { 
    e.preventDefault(); 
    var hash_array = this.hash.split('#'); 
    var hash = hash_array[hash_array.length - 1]; 
    jQuery('html, body').animate({ 
     scrollTop: jQuery('#' + hash).offset().top 
    }, 1000); 
}); 
+0

Элемент управления даже не входит в функцию onClick! –

+0

Как? когда селектор тот же, который вы использовали в своем вопросе. – Sumit

+0

@SaurabhVerma Проверьте обновленный, была некоторая опечатка! – Sumit

1

Ссылка с несколькими # 'S не сможет быть истолковано как то, что „this.hash“ вы пытаетесь перейти к ... возможно, что-то подобное может работать:

$(".navbar-nav li a[href^='#']").on('click', function(e) { 
    e.preventDefault(); 
    hash = this.hash.split('#'); 
    $('html, body').animate({ 
     scrollTop: $('#' + hash[1]).offset().top 
    }, 1000); 
}); 

Demo : https://jsfiddle.net/f31m3h6L/1/

+0

Поставив точку останова, я вижу, что элемент управления даже не входит в функцию onClick –

+0

Я не понимаю ваш комментарий. Я разместил выше в jsFiddle, и это сработало ... – Sators

+0

Не могли бы вы дать мне ссылку на эту скрипку? –