2016-12-29 3 views
-1

Что делает нижеследующий Javascript? Может ли кто-нибудь объяснить, что делает каждая строка в этом гладком API прокрутки? началоNoobProgramer = «Нужно пояснить этот код JQUERY smoothcrolling»

$('a').click(function(){  //when you click 'a' run this function 
     $('html, body').animate({    // animate what is in the html and body? 
     scrollTop: $($(this).attr('href')).offset().top //grab coordinates? 
     }, 800);        // scroll speed? 
     return false;      // not sure what this means 
    }); 
+2

'вернуть false;' отменяет действие щелчка. Документация по анимации: http://api.jquery.com/animate/ Jquery multiple selectors https://api.jquery.com/multiple-selector/ – epascarello

+0

Почти все хорошо ... '$ ('html, body')' (я думаю, что html не включается) ... и 'return false' мешает' a' работать как ожидалось (вы выполняете настраиваемое поведение при нажатии на элемент 'a', поэтому вы не нужно поведение по умолчанию) – Hackerman

+0

'return false' работает так же, как' function (ev) {ev.preventDefault(); ', как сказал @epascarello, он просто делает это, когда вы нажимаете ссылку, это не будет перенаправить на 'href =" "' – Baruch

ответ

3

Ok Давайте, первые 2 строки являются правильными из вашего исследования

$('a').click(function(){  //when you click 'a' run this function 
    $('html, body').animate({  // animate the actual body and html element? 

Следующая строка немного сложнее. Давайте разбить его

$(this).attr("href") 

(а) HREF значение атрибута, по которым щелкнули элемента (в данном случае это может быть что-то вроде # test1 или # test2

$($(this).attr("href") 

, если выше, имеет значение «# test1 «селектор становится $ (» # test1'), который соответствующие два всех элементы с id=test1

$().offset().top 

вы получаете метод смещения, который имеет координаты элемента документа. Один из я e переменными являются вершины, которые являются расстоянием от вершины документа.

И поэтому следующая строка будет найти общее количество пикселей, которые необходимы для прокрутки

 scrollTop: $($(this).attr('href')).offset().top 
    }, 800);   // this is the scroll speed 
    return false; // this will stop the anchor element from executing the default functionality, which is actually navigating to the href specified. 
}); 

Я надеюсь, что это помогает: P

+0

спасибо! Кажется, я понял это сейчас. –

 Смежные вопросы

  • Нет связанных вопросов^_^