javascript

jquery获取隐藏元素宽高错误的解决办法

2018-02-28  本文已影响14人  YINdevelop

jquery获取隐藏元素宽高错误

这几天在做tab切换这块,发现要获取切换的内容的宽高,得到隐藏元素的宽高总是错误的。于是便立即写了个demo测试下是哪里错误。

结构如下:

    <ul class="tab">
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
    <div class="tab-content">
        <p>
            <span>span1</span>
            <span>span1</span>
        </p>
        <p style="display:none">
            <span>span2</span>
            <span>span2</span>
        </p>
        <p style="display:none">
            <span>span3</span>
            <span>span3</span>
        </p>
    </div>

js:

 var p_height=$(this).outerHeight(true)
    var p_width=$(this).outerWidth(true)
    var _height = $(this).find('span').eq(0).outerHeight(true)
    var _height1 = $(this).find('span').eq(1).outerHeight(true)
    var _width = $(this).find('span').eq(0).outerWidth(true)
    var _width1 = $(this).find('span').eq(1).outerWidth(true)
    console.log(p_height,p_width);
    console.log(_height, _height1 , _width, _width1 );

测试下发现,

内部第一层p标签的宽高是对的,但是再往里面一层隐藏的span标签的宽高是错误的(已经转换成块元素)。网上搜索发现,这个是js的bug。

发现了一个解决办法jquery.actual.js官网

使用方法:

代码范例,使用如下写法即可。

$('.hidden').actual('width');

$('.hidden').actual('innerWidth');

$('.hidden').actual('outerWidth');

$('.hidden').actual('outerWidth',{includeMargin:true});

$('.hidden').actual('height');

$('.hidden').actual('innerHeight');

$('.hidden').actual('outerHeight');

$('.hidden').actual('outerHeight',{includeMargin:true});

由于主站服务器不稳定,经常打不开,所以将js保存下来点我

上一篇下一篇

猜你喜欢

热点阅读