2014-12-16 12 views
0

Я пытаюсь установить триггер на кнопку, показанную здесь: http://jsfiddle.net/3gdc0ajs/4/ После нажатия кнопки страница «Домашняя страница» прокручивается из окна просмотра, а на странице «Прокрутка» прокручивается страница «О программе».Добавление триггера к кнопке

Я написал:

$('.cps-trigger').click(function() { 
    .animate('slow'); 
}); 

я застрял этот фрагмент кода в свой файл .js, между последним набором «});» и комментарий «end dot nav». В результате он полностью остановил навигацию по вертикальной точке, поэтому я удалил фрагмент. Я довольно плохо писал jquery, но я пытаюсь. Может кто-то осветить какой-то свет, почему мой фрагмент кода не работает?

+2

Plain '.animate()' является синтаксической ошибкой. Методы применяются к объектам, поэтому вам нужно указать объект перед точкой. –

+0

О, ладно. Поэтому я что-то упустил, объект. Спасибо. – hnewbie

ответ

0

Вам нужно будет написать функцию, которую будет вызывать в случае щелчка. Если событие click находится на привязном теге, вам необходимо будет предотвратить значение по умолчанию. Пример:

var scrollTo = function(id){ 

    // scroll to about section functionality 
    var scrollPos = $(id).offset().top; 
    $('html, body').animate({ scrollTop: scrollPos + 'px' }, 'slow'); 

}; 

// your click event 
$('.my-button').click(function(e){ 
    e.preventDefault(); 
    scrollTo('#about'); 
}); 
+0

Я вынул теги, чтобы увидеть, будет ли ваш jquery-фрагмент работать. Это не так. Я разместил его внутри и снаружи последнего набора «});». Я использовал класс «что» и заменил его «.my-button». Я нажал кнопку, и ничего не произошло. Никаких изменений на страницах. Я также пробовал делать scrollTo (#about); и ничего не произошло. Я помещаю код там, где он должен быть? – hnewbie

+0

Мой код был всего лишь примером того, как вы могли это сделать. Вам нужно будет заменить селекторов своим собственным и добавить функциональность для прокрутки к различным разделам. Но вы говорите, что у вас нет кода, чтобы заставить работать функции прокрутки? –

+0

Я обновил свой код. Вам нужно будет поменять мою кнопку, чтобы ваша кнопка была –

1

Вы плавающий вызов метода (я сделал этот термин до я думаю!).

.animate('slow'); 

Вы не уточняя объект для вызова метода на так ваш синтаксис недействителен. Если вы пытаетесь анимировать префикс кнопки с этим, то:

$(this).animate({ 
    // animation params 
    }, 'slow'); 

Если th at не объект, который вы пытаетесь оживить, чем вам нужно будет заменить его на фактический объект. В любом случае, вышеизложенное предотвратит нарушение остальной части вашего кода.

+3

Нет, '$ (this)'. Обычный элемент 'this' является элементом DOM, а элементы DOM не поддерживают' animate() '. Вы также должны указать * what * для анимации, а не только продолжительность. –

+0

Конечно, спасибо, что указал на это, решение казалось таким очевидным, что мой мозг заснул. :) – DoctorMick

0

попробовать с помощью:

$('.cps-trigger').click(function() { 
     $(this).animate(
{scrollTop:posi}//or something else which you want for 
,'slow'); // use current object to animate 

    }); 
+0

Я пробовал, и это не сработало. :(Я поместил его внутри и снаружи последнего "}); на скрипке. – hnewbie

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