我使用 jQuery 构建了一个网站控件,它是一个包含四个彩色 div 的长条;用户可以在整个栏的范围内拖动两个 div 之间的连接来调整它的大小(整个栏的宽度不会改变)。此外,用户可以删除/替换任何 div,但必须保留在那里。
在我的电脑上调试时,它运行良好。现在我将它托管并发现 jQuery 报告的一些值不一致 - 特别element.css('left')
是element.width()
. 当我设置要输出到控制台的值并反复刷新页面时,我看到有时left
从没有设置它的元素读取返回 NaN,有时返回 0。我通过检查它并明确地克服了这个问题它0。
另一种是width
。我有一个包裹内部 div 的 div,它决定了滑块的固定宽度——目前设置为 1000px。这是在js 文件后链接的 css 样式表中设置的。在页面加载代码(in $(function(){})
)中查询这个宽度值,有时会报告1000px,但有时会报告1887px??这似乎没有押韵或理由 - 我的假设是这是一个竞争条件,在渲染引擎设置宽度之前读取宽度?有人可以确认/否认这一点,或者指出我在 DOM 中提供对象/属性的顺序摘要吗?我曾认为通过将代码放入 $(function()) 文档将全部加载...
PS:如果有人想要小部件代码的副本在其他地方使用,请告诉我,很乐意提供:-)
编辑:如果您单击以拖动并滚动鼠标滚轮,则有一个附加功能,它会向上和向下轻推障碍物,以进行精细控制。我刚刚发现它不会报告正确的数字,而是不会移动,只会显示 NaN。在我的本地网络上,这工作正常(与托管的文件相同,但通过网络而不是互联网提供服务)。出于某种原因,解析值的行只返回 NaN:parseFloat($('#ICDM').children('.slider').children('.b1').attr('data-high'))
我无法理解为什么它会在网络上解析它而不是通过互联网!有没有人有解决方案或替代方案?