【发布时间】:2013-09-11 05:02:00
【问题描述】:
我认为我在 Javascript 中发现了一个非常不寻常的错误,但我不确定。
所以我有三个子 div 绝对位于父 div 内(即相对位置)。
三个子 div 的宽度为 1200 像素,并且在父级中并排。
所以第一个div是left:0px,第二个是left:1200px,第三个是left:2400px。
现在我的目标是单击并移动 div。 (父 div 充当 1200px 视口)
$("#blogNav").click(function()
{
$("#blog").css( "left", "0px");
$("#software").css( "left", "1200px");
$("#about").css( "left", "2400px");
});
$("#softwareNav").click(function()
{
$("#blog").css( "left", "-1200px");
$("#software").css( "left", "0px");
$("#about").css( "left", "1200px");
});
$("#aboutNav").click(function()
{
$("#blog").css( "left", "-2400px");
$("#software").css( "left", "-1200px");
$("#about").css( "left", "0px");
});
这完美无缺。
现在问题来了。
当我对 hashchange 事件做同样的事情时:
window.onhashchange = function()
{
if(window.location.hash=="#blog")
{
$("#blog").css( "left", "0px");
$("#software").css( "left", "1200px");
$("#about").css( "left", "2400px");
}
if(window.location.hash=="#software")
{
$("#blog").css( "left", "-1200px");
$("#software").css( "left", "0px");
$("#about").css( "left", "1200px");
}
if(window.location.hash=="#about")
{
$("#blog").css( "left", "-2400px");
$("#software").css( "left", "-1200px");
$("#about").css( "left", "0px");
}
};
定位都搞砸了。
父 div 的 0px 位置发生偏移,使 0px 不再是父 div 的左边框。它处于负边距。
唯一有变化的是 hashevent。
我希望我解释得足够好。
我会尽快将一些示例上传到我的网站。
这真的很奇怪,完全相同的逻辑如何与点击事件一起工作,而不是与 hashchange 事件一起工作。
【问题讨论】:
-
不要将示例上传到您的网站;在jsfiddle 上制作一个可以重现问题的最低限度。这样人们就可以实际更改您的代码并将其展示给您。
标签: javascript jquery jquery-events hashchange