Кнопка Назад в Ajax отключает анимацию - PullRequest
1 голос
/ 02 августа 2010

У меня есть веб-страница на http://www.optiekmeulemeester.be/normal со скользящей навигацией. Это происходит со следующим кодом:

$(".link").click(function(){
  var link = $(this).attr('href');
  $("#middle").scrollTo(link, 800);
  return false;
});

Это работает, но сейчас я пытаюсь включить кнопку Назад, используя адрес jQuery (http://www.asual.com/jquery/address/). Мой код изменился на:

$.address.change(function(event){
  var link = event.pathNames[0] || '#panel1'; 
  if(link != '#panel1'){ link = '#' + link;}
  $("#middle").scrollTo(link, 800);
});

Код для всех кликов .link закомментирован, а возвращаемое значение false.

Моя кнопка «Назад» активируется, и в основном она работает, как вы можете видеть и тестировать на http://www.optiekmeulemeester.be/test. Я уверен, что она нуждается в настройке для особых случаев, но прежде чем я начну, большая проблема заключается в том, что моя анимация больше не работает.

* edit: теперь я вижу, что иногда это работает, а иногда нет. Не могу найти логику в этом. Также как и по ссылкам, как через кнопку назад?!? Кто-нибудь понял мою ошибку?

Это потому, что вызов анимации происходит после того, как адрес изменяется через стандартное поведение a (nchor)?

Спасибо заранее.

Ответы [ 2 ]

1 голос
/ 03 августа 2010

Попробуйте что-то вроде следующего:

$.address.change(function(event){
  $("#middle").scrollTo('#' + (event.pathNames[0] || 'panel1'), 800);
});

$(".link").address();

Несколько советов:

  • Используйте голосовые имена для ссылок вместо panel1, panel2 и т. Д.
  • Попробуйте сделать некоторые различия между идентификаторами контейнеров и значениями адресов, потому что браузеры могут использовать некоторые встроенные функции для прокрутки в нужное место.Рассмотрите возможность включения режима сценария как вариант для этого.
  • Используйте пустое значение для первой панели, чтобы вы могли иметь одно уникальное значение для первой страницы, а не "" и "panel1".
  • Рассмотрите возможность использования опции переносаПлагин, который должен исправить некоторые из встроенной прокрутки.
1 голос
/ 02 августа 2010

1 Ответ, который я нашел, но, вероятно, это обходной путь:

$.address.change(function(event){
  var link = event.pathNames[0] || '#panel1';
  if(link != '#panel1'){ link = '#' + link;}
  $("#middle").scrollTo(link, 800);
});

$(".link").click(function(){
  var link = $(this).attr('href');
  $("#middle").scrollTo(link, 800);
  return true;
});

Тот же код в функции $ .address.change + еще раз в $ (". Link"). Click + returnистина, так что address.change запущен.

Работает сейчас :).Если у вас есть что-то лучше, дайте мне знать!

...