首页  >  问答  >  正文

javascript - jquery each循环得到div的宽度,再赋值给父元素。结果为什么不对?

<script src="jquery.js"></script>
<p id="a1">
    <p class="aa" style="width: 200px;">423423423423423423423</p>
    <p class="aa" style="width: 180px;">42342342342342342</p>
    <p class="aa" style="width: 150px;">123123</p>
</p>
<script>
var w = 0
$("#a1 .aa").each(function(){
    w += $("#a1 .aa").width();//获取宽度。并累加
})
$("#a1").width(w)
</script>
<style>
    .aa{
        display: inline-block;
    }
</style>

本来结果应该是这样的的

但是把行内样式去掉之后,结果就好大了。

为什么把行内样式去掉。就这样了呢????

迷茫迷茫2734 天前707

全部回复(7)我来回复

  • 我想大声告诉你

    我想大声告诉你2017-05-19 10:44:40

    style标签对放到domjs之前
    你的代码结构如果没有行内样式,会先把.aa按照块级元素处理,宽度为100%
    js处理完成之后才读取style标签对,把.aa处理为行内块级元素,宽度缩短
    同步的代码要把位置摆正确

    回复
    0
  • ringa_lee

    ringa_lee2017-05-19 10:44:40

    w += $("#a1 .aa").width();//获取宽度。并累加

    w += $(this).width();

    回复
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-19 10:44:40

    把style里的样式放在最上边,页面加载是从上往下加载的,p是块级元素,.aa{display:inlne-block;}在最下边并没有起作用

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-19 10:44:40

    雷雷

    回复
    0
  • 高洛峰

    高洛峰2017-05-19 10:44:40

    雷雷

    回复
    0
  • 怪我咯

    怪我咯2017-05-19 10:44:40

    回复
    0
  • 迷茫

    迷茫2017-05-19 10:44:40

    你没有理解$(selector)的真正意思
    去查查会返回什么就知道问题了

    $("#a1 .aa").each(function(){
        w += $("#a1 .aa").width(); // 这一句会返回什么?
    })

    另一个问题
    要明白 样式 到哪里才会被加上,会被提前加载吗?
    而 script 的执行是怎样?

    回复
    0
  • 取消回复