我正在使用<ul>
建立一个弹出菜单。
示例:
<ul class="uiMenu">
<li>One
<ul>
<li>Test Child</li>
</ul>
</li>
<li>Two
<ul>
<li>Test Child 2</li>
</ul>
</li>
<li>Three</li>
</ul>
因此,菜单left
offset
的弹出按钮应该是父菜单项offset
left
的{{1}}。
当我通过每个父offset
进行迭代时,我注意到偏移量是十进制值。
但是在IE的旧版本中它们不是,为了简单起见,我想避免十进制偏移。
是否有任何想法确保偏移值最终为整数?
答案 0 :(得分:6)
使用Math.round()
/ Math.floor()
Math.round($(this).offset().left);
答案 1 :(得分:0)
您可以使用 parseInt(offsetValue)方法。这是一个小数点。
答案 2 :(得分:0)
一个简洁的javascript技巧是左移零位将截断任何小数位,实际上与Math.floor()
相同
例如,
/* this == 1 */
1.3 << 0;
/* also == 1 */
1.8 << 0;
但是请注意,这在最严格的循环中只有任何好处 - 如果您怀疑Math.floor()的函数表查找和堆栈push / pops实际上花费了您的时间。
只需将其放在此处以供参考。使用Math.round()
或Math.floor()
对您的问题来说将是更正确的答案,因为它更具可读性。
答案 3 :(得分:0)
使用
(文档)$。就绪(函数(){
$('.uiMenu > li').each(function(){
console.log('offset().left: ' + parseInt($(this).offset().left));
});
});
答案 4 :(得分:-1)
它迭代'uiMenu'中的所有LI元素。为了更好和非冲突的代码。提供顶级标题lis的ID。
<ul class="uiMenu">
<li class="title">One
<ul>
<li>Test Child</li>
</ul>
</li>
<li class="title">Two
<ul>
<li>Test Child 2</li>
</ul>
</li>
<li class="title">Three</li>
</ul>
选择.title
$('.title ').each(function(){
console.log('offset().left: ' + $(this).offset().left);
});