#jquery #jquery-plugins #conditional #scrollto #serialscroll
#jquery #jquery-плагины #условные операторы #прокрутка до #serialscroll
Вопрос:
Сайт находится @ beattrainsoundsystem.com/home
Я использую serialScroll для анимации нескольких разделов, содержащих танцующих персонажей, и использую localScroll для анимации разделов содержимого. Моя проблема в том, что при попытке загрузить URL-адрес с хэшем (например beattrainsoundsystem.com/home#store ) символы divs не анимируются в правильном положении. Я знаю, что для того, чтобы это произошло, мне нужно создать условную функцию для настройки «start:», чтобы изменить значение «start:» в зависимости от хэша в URL. Будучи в некоторой степени новичком в jQuery, я не совсем уверен, как это закодировать.
Я уже использую плагин для синтаксического анализа URI для возврата хэша в URL, поэтому для «http://www.beattrainsoundsystem.com/home#store«
var urlHash = $.url.attr('anchor');
вернет «сохранить»
Итак, что мне нужно, так это функция, которая говорит:
if (urlHash == home) {
var start = 0
} else if (urlHash == mixes) {
var start = 1,
} else if (urlHash == contact) {
var start = 2,
}
Очевидно, что это неверно закодировано, но является концептуализацией скрипта, который мне нужен для выполнения этой работы.
Спасибо за вашу помощь!
Ответ №1:
Вероятно, вам следует интегрировать это с localScroll. Если вы вызовете $.localScroll.hash(), она прокрутит до элемента, на который указывает хэш, и уведомит об изменении serialScroll.
Комментарии:
1. Это так! Я использую последовательную прокрутку для анимации персонажей, локальную прокрутку для анимации содержимого… смотрите приведенный ниже код
Ответ №2:
Мне не сразу бросается в глаза, где обрабатываются события нажатия для ссылок вверху, которые я пытался найти, чтобы привести конкретный пример.
Похоже, единственный раз, когда анимация не работает, это когда я перехожу непосредственно на какую-то страницу, у которой есть хэш в URL. Итак, я мог бы сделать что-то вроде:
- При загрузке страницы возьмите #name из URL-адреса
- Найдите элемент, чье href = имя я захватил (у вас они названы одинаково, лучше было бы дать им
<a href="#name">
идентификатор, такой как<a id="name" href="#name">
- Выполните событие click() для этого элемента, чтобы имитировать обычный метод анимации
Это не идеально, если вы хотите, чтобы он загружался в правильном положении без показа анимации.
Вы должны быть в состоянии сделать что-то вроде этого:
$(document).ready(function(){
// This whole part is pseudocode since I didn't spend
// the time to find exactly how you're doing things
// get the hash portion from the URL
// (just copying you here, haven't done this myself)
var sourceLinkHref = $.url.attr('anchor');
// Find the <a> tag whose href attribute matches the
// name you just found, and .click() it
$("a[href=#" sourceLinkHref "]")
.click();
});
Комментарии:
1. Я не тестировал ваш код, но концепция, которую вы упомянули (на которой был основан код), верна… Я решил проблему, смотрите Мой ответ ниже. Спасибо!
Ответ №3:
jQuery(function( $ ){
var urlHash = $.url.attr('anchor');
if (urlHash=="mixes") {
$("#sectionsContent").scrollTo( $("#mixes"), 0 );
$("#sectionsMid").scrollTo( $("#mixmid"), 0 );
$("#sectionsTop").scrollTo( $("#mixTop"), 0 );
$("#sectionsBottom").scrollTo( $("#mixBottom"), 0 );
}
if (urlHash=="contact") {
$("#sectionsContent").scrollTo( $("#contact"), 0 );
$("#sectionsMid").scrollTo( $("#storemid"), 0 );
$("#sectionsTop").scrollTo( $("#storeTop"), 0 );
$("#sectionsBottom").scrollTo( $("#storeBottom"), 0 );
}
if (urlHash=="store") {
$("#sectionsContent").scrollTo( $("#store"), 0 );
$("#sectionsMid").scrollTo( $("#blogmid"), 0 );
$("#sectionsTop").scrollTo( $("#blogTop"), 0 );
$("#sectionsBottom").scrollTo( $("#blogBottom"), 0 );
}
});