点击时滑动面板跳回家

时间:2011-07-08 07:47:56

标签: jquery html css slidetoggle

我在1页的网站上制作了一个垂直滑动面板(点击右上角的psssst)。 总而言之,它工作得很好,它可以正常上下滑动(滑动时按钮上仍然有点凹凸,但没有任何重量)。

问题是,当您向右滚动然后单击滑动面板时,它会跳回到页面的开头。

我该如何解决/阻止这种情况? 您可以在此处查看问题:http://www.basenharald.nl/3d

提前感谢!

2 个答案:

答案 0 :(得分:1)

尝试将return false;添加到您的点击处理程序:

// Expand Panel
$("#open").click(function(){
    $("div#panel").slideDown("slow");
    return false;
}); 

// Collapse Panel
$("#close").click(function(){
    $("div#panel").slideUp("slow");
    return false;
}); 

答案 1 :(得分:1)

您似乎有两个问题:

第一个问题(你已经修好了,我认为)

主播上的点击事件会将您转到“/#”网址。发生这种情况是因为anchor元素的href为“#”,浏览器的默认行为是将您发送到该URL。

为了阻止发生这种情况,您应该在点击事件处理程序中使用e.preventDefault(),或者如果要停止所有事件传播,则应使用return false < / strong>(因为这就是jQuery的工作方式)。

第二个问题

似乎即使在阻止默认行为后,单击“#open”或“#close”仍然会使Scroller返回初始状态。在firebug中,我可以看到在这些元素上有click事件的处理程序导致这种情况发生。您可以通过在firebug中运行它来自己看到它:

console.log($('#close')[0].onclick.toString())

你会看到:

function () {
  Scroller.end(this);
  l = this.hash.substr(1);
  a = document.getElementsByTagName("a");
  for (i = 0; i < a.length; i++) {
    if (a[i].name == l) {
      clearInterval(Scroller.interval);
      Scroller.interval = setInterval("Scroller.scroll(" + Scroller.offsetParent(a[i]) + ")", 10);
    }
  }
}

您的代码中的某个地方似乎正在为所有锚点和行

分配一个事件处理程序
Scroller.interval = setInterval("Scroller.scroll(" + Scroller.offsetParent(a[i]) + ")", 10); 

是导致您的Scroller“重置”,“返回”或其他什么的原因。

也许问题是有条件的?也许if (a[i].name == l)始终在评估 true ,并最终将事件处理程序分配给所有锚点,即使这不是它的意图。

我对你的应用程序和/或你正在使用的任何插件都不太了解,所以我只能告诉你问题出在哪里,而且它就在这个函数中。

希望这有帮助。