我在1页的网站上制作了一个垂直滑动面板(点击右上角的psssst)。 总而言之,它工作得很好,它可以正常上下滑动(滑动时按钮上仍然有点凹凸,但没有任何重量)。
问题是,当您向右滚动然后单击滑动面板时,它会跳回到页面的开头。
我该如何解决/阻止这种情况? 您可以在此处查看问题:http://www.basenharald.nl/3d
提前感谢!
答案 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 ,并最终将事件处理程序分配给所有锚点,即使这不是它的意图。
我对你的应用程序和/或你正在使用的任何插件都不太了解,所以我只能告诉你问题出在哪里,而且它就在这个函数中。
希望这有帮助。