我很困惑。
http://jsfiddle.net/pyn8s/
单击登录按钮。
等待弹出窗口出现。
注意它的位置。
再次单击登录按钮。
观看它向左移动。 (正确的位置)
再次单击登录按钮。
请注意,它不再移动了。
我茫然不知所措,我不确定如何描述这种奇怪的行为。我注意到note.outerWidth(true)上有一个警报,它在前两次登录单击时报告了一个不同的宽度,但是该对象永远不会不可见,并且应该在调用externalWidth之前设置其宽度...
最佳答案
当jQuery第一次评估note.outerWidth()时,它将获得其父级宽度(loginForm = 250px ),因为在CSS中未定义note的宽度(仅定义了max-width)。
浏览器在.append()之后呈现新笔记内容,但其新宽度在.offset()之后计算:
查看控制台日志:http://jsfiddle.net/HighKickX/QSsV6/
max-width + 2 * (padding + border-width)
= 300px + 2 *(5px + 1px)= 312px
再次单击时,偏移将基于312px而不是250px计算。这就是为什么音符将移至另一个位置的原因。
解决方案1 :删除“position:absolute” http://jsfiddle.net/HighKickX/wjeGF/
说明:
如果您设置position:absolute,则注释将从流程中删除,并且不再从loginForm继承250px的宽度。因此,其宽度不限于250px,而最大宽度为300px +填充+边框= 312px。
如果您未设置position:absolute,则笔记的宽度将被继承并等于250px(始终)。
解决方案2 :设置默认宽度http://jsfiddle.net/HighKickX/Ex3Bp/
关于javascript - outsideWidth(true)连续两次返回不同的值,而无需重新加载页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11336377/