Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Не работает скроллинг (https://javascript.ru/forum/dom-window/53305-ne-rabotaet-skrolling.html)

Dryn9 29.01.2015 02:08

Не работает скроллинг
 
Добрый вечер. У меня такая проблема: есть функция:
<script type="text/javascript">
function scrolling() {
	var elementClick = $(this).attr("href");       
    var destination = $(elementClick).offset().top - 100;       
    if ($.browser.safari)
    {           
        $('body').animate({ scrollTop: destination }, 1100); //1100 - скорость прокрутки       
    }
    else
    {           
        $('html').animate({ scrollTop: destination }, 1100);       
    }       
}
</script>

Хочу чтобы в меню при нажатии на кнопку вызвать эту функцию и скроллить, но оно не работает. Код меню.
<ul>
<li><a onclick="scrolling ()" href="#hdr">Главная</a></li>
<li><a onclick="scrolling ()" href="#content">Наши услуги</a></li>
<li><a onclick="scrolling ()" href="#princip">Наши принципы</a></li>
<li><a onclick="scrolling ()" href="#shema">Как мы работаем</a></li>
<li><a onclick="scrolling ()" href="#raboty">Наши работы</a></li>
</ul>

Что я сделал не так?

рони 29.01.2015 02:14

Dryn9,
не отменил действие по умолчанию на ссылке
назначил клик в теге
сделал бесполезный if
не воспользовался поиском по форуму

рони 29.01.2015 02:24

Dryn9,
http://javascript.ru/forum/misc/4093...akoryam-2.html

ruslan_mart 29.01.2015 02:31

Лучше сделать по другому:

<ul>
    <li><a href="#hdr">Главная</a></li>
    <li><a href="#content">Наши услуги</a></li>
    <li><a href="#princip">Наши принципы</a></li>
    <li><a href="#shema">Как мы работаем</a></li>
    <li><a href="#raboty">Наши работы</a></li>
</ul>



$(document).on('click', 'a[href]', function() {
    if((!this.target || this.target == '_self') && this.getAttribute('href').charAt(0) == '#') {
        var elem = $(this.hash);
        if(elem) {
            ('body, html').animate({scrollTop: elem.offset().top - 100}, 1100);
        }
    }
});

рони 29.01.2015 02:47

Ruslan_xDD,
Цитата:

Сообщение от рони
не отменил действие по умолчанию на ссылке


рони 29.01.2015 02:58

Цитата:

Сообщение от Ruslan_xDD
if(elem)

???
хотябы elem.length

danik.js 29.01.2015 03:15

В догонку ))
Цитата:

Сообщение от Ruslan_xDD
this.getAttribute('href').charAt(0) == '#'

Ссылка может ссылаться на локальный якорь, но в атрибуте прописан полный адрес текущей страницы (сам сталкивался с таким, из-за злоупотребления <base href>)
И если уж и за бить на такое, то тут:
Цитата:

Сообщение от Ruslan_xDD
'a[href]'

можно сразу ограничить выборку по [href^=#]

Цитата:

Сообщение от Ruslan_xDD
this.target == '_self'

Это какой-то браузер чудит или расчет на прописанный в html атрибут? Но тогда как насчет '_top'?

Dryn9 30.01.2015 00:35

Мне надо чтобы не для всех элементов, а именно для этих.

рони 30.01.2015 00:57

Dryn9,
выкиньте из вашего скрипта строки 5,6,7,8,9,10, и 12.
если не смогли осилить подсказки


Часовой пояс GMT +3, время: 05:07.