如何在jquery中获取元素的innerWidth而不使用滚动条

前端之家收集整理的这篇文章主要介绍了如何在jquery中获取元素的innerWidth而不使用滚动条前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_404_1@给定一个包含滚动条的div(例如溢出的b / c:auto),如何获得元素的准确innerWidth?在我的示例中: http://jsfiddle.net/forgetcolor/2J7NJ/ width和innerWidth报告相同的宽度.我想要的数字应该少于100.

HTML:

<div id='Box1'>
<div id='Box2'>
</div>
</div>
<p id="w"></p>
<p id="iw"></p>​

CSS:

#Box1 { 
    width:100px;
    height:100px;
    overflow:auto;
}

#Box2 {
    width:200px;
    height:200px;
    background-color:#aaa;
}

使用Javascript:

$('#w').text("width is: "+$('#Box1').width());
$('#iw').text("inner width is: "+$('#Box1').innerWidth());​

更新:

Box2 div包含一个大图像时(因此需要一秒钟加载),我需要这个工作.这是一个例子,集成了下面的解决方案之一(Lukx’),这不起作用:http://jsfiddle.net/forgetcolor/rZSCg/1/.有任何想法如何让它在计算宽度之前等待图像加载?

解决方法

通过将新DIV插入#Box1-Container,此DIV将获得可用宽度 – 读取其宽度将返回一个看似正确的值.

HTML和CSS都保持不变

JS成了

var helperDiv = $('<div />');
$('#Box1').append(helperDiv);

$('#iw').text("inner width is: " + helperDiv.width());
helperDiv.remove();​​​​​​​​​​​​​​​​​​​​​​​​​​​ // because we dont need it anymore,do we?

我也分叉你的小提琴,看看我做了什么:http://jsfiddle.net/xc9xQ/2/

所以用函数得到这个值:

function widthWithoutScrollbar(selector) {
  var tempDiv = $("<div/>");
  $(selector).append(tempDiv);
  var elemwidth = tempDiv.width();
  tempDiv.remove();
  return elemwidth;
};

//Example
console.log($('#page').width());  // 1280
console.log(widthWithoutScrollbar('#page'));  // 1265
原文链接:https://www.f2er.com/jquery/180566.html

猜你在找的jQuery相关文章