Ajax中的后退按钮禁用动画

时间:2010-08-02 12:04:18

标签: jquery animation back-button

我在http://www.optiekmeulemeester.be/normal有一个带滑动导航的网页。使用以下代码会发生这种情况:

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

这有效,但现在我正在尝试使用jQuery Address(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查看和测试。我确定它需要针对特殊情况进行调整,但在我进入之前,最大的问题是我的动画不再适用了。

*编辑:我现在看到它有时会起作用,有时它不会。无法找到它的逻辑。以及通过后退按钮点击链接?!?有人得到我的错误吗?

这是因为动画的调用是在地址通过标准a(nchor)行为改变之后发生的吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

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”)中的另一次。单击+返回true以便触发address.change。

现在工作:)。如果你有更好的东西让我知道!

答案 1 :(得分:1)

尝试以下内容:

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

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

很少有人建议:

  • 为您的链接使用发言名称,而不是panel1,panel2等。
  • 尝试在容器的ID和地址值之间做一些区别,因为浏览器可能会强制执行某些内置行为以滚动到正确的位置。考虑启用脚本模式作为此选项。
  • 为第一个面板使用空值,以便第一页可以有一个唯一值,而不是“”和“panel1”。
  • 考虑使用应该修复某些内置滚动的插件的wrap选项。