2013-04-15 6 views
3
$(document).ready(function() { 
    $("#contact_menu").click(function() { 
     $(body).scrollTo("#contact", 800); 
    }); 
}); 

Я набрал это в своем коде, надеясь, что это сделает мою страницу прокруткой, но я не буду работать. Я попробовал несколько способов, но я не могу понять.jQuery scrollTo

Я надеюсь, что один из вас может мне помочь.

+0

Можете ли вы разместить свой html? –

+0

уверен, что он сразу же подходит – Johan

+4

Что такое $ (тело)? Может быть, вы имели в виду $ («тело»)? –

ответ

5

Попробуйте это:

$("#contact_menu").click(function() { 
     $("body").animate({ 
     scrollTop: $("#contact").offset().top 
    }, 2000); 
}); 

jsFiddle: http://jsfiddle.net/hescano/43umh/

Вы пробовали этот плагин? http://demos.flesler.com/jquery/scrollTo/

+0

Да, я пытался это сделать, но не был уверен, что это плагин или нет. – Johan

+2

@Johan - Хороший способ узнать, это google "_jquery scrollto_". Если функции не требуется плагин, первый результат приведет вас к документации jQuery. Если требуется плагин, первые несколько результатов поиска должны сделать его очевидным. В общем, всякий раз, когда у вас возникает вопрос о функции, вы должны немедленно отправить «_jquery FUNCTION_NAME_». – jahroy

+1

Я думаю, Firefox требует, чтобы вы анимировали '$ (" html ")'. Вот почему большинство учебных пособий по анимированной прокрутке имеют '$ (" html, body ")' как объект для анимации. ref: http://stackoverflow.com/questions/9769630/why-jquery-has-to-receive-2-objects-body-html-when-scrolling-whole-page-with – 2013-04-15 19:15:51

2

Если вы собираетесь использовать JQuery для прокрутки к чему-то, использовать .scrollTop:

$(document).ready(function() { 
    var pos = $('#contact').position(); 
    $("#contact_menu").click(function() { 
     $(body).animate({scrollTop:pos.top},800); 
    }); 
}); 
+0

наконец-то что-то работает! Спасибо! – Anthony

0

Попробуйте

$(document).ready(function() { 
    $("#contact_menu").click(function() { 
     $('body, html').animate({ scrollTop: $("#contact").offset().top }, 800); 
    }); 
}); 
+0

Спасибо, отлично работает! – Johan

0

Я не знаю о функции «scrollTo», но если это действительно существует, проблема может быть в селекторе. В зависимости от браузера вам нужно либо оживить тело ИЛИ объект html. Что я обычно делаю анимировать scrollTop что-то вроде этого:

$('html,body').animate({ scrollTop: $('#contact').position().top+'px'}, 400, function() {}) 

Обратите внимание, что я выбрал 400ms для продолжительности, но вы можете использовать все, что вы хотите. Последний параметр функции() - это обратный вызов, что означает, что он называется правильным, когда анимация выполнена. Надеюсь, это помогло.

+0

да, вы правы, scrollTo doesn 't существует, или он больше не может быть, но он решен с ответом Hanlet – Johan

+0

@Johan - _scrollTo() _ требует [плагина] (http://archive.plugins.jquery.com/project/ScrollTo). _scrollTop() _ не делает. – jahroy

+0

И .scrollTop() не анимирует, .animate ({scrollTop: значение}) делает! – Bene