Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquerywidth();工作不正常_Javascript_Jquery_Css - Fatal编程技术网

Javascript jquerywidth();工作不正常

Javascript jquerywidth();工作不正常,javascript,jquery,css,Javascript,Jquery,Css,我想我快疯了:) 在我的js文件中,我有: alert( $('.element').width() ); 它会提醒“867”…这是错误的 在Chrome或Firefox控制台中,我键入: $('.element').width(); 它的回应是567。这是正确的 我是不是遗漏了什么。我应该用另一种方式来做吗。因为js文件中的代码把一切都搞糟了 顺便说一句,元素确实通过CSS设置了宽度和浮点值——宽度:80%,浮点值:左。但是浏览器控制台仍然给了我正确的宽度 谢谢。试试看 $('.eleme

我想我快疯了:)

在我的js文件中,我有:

alert( $('.element').width() );
它会提醒“867”…这是错误的

在Chrome或Firefox控制台中,我键入:

$('.element').width();
它的回应是567。这是正确的

我是不是遗漏了什么。我应该用另一种方式来做吗。因为js文件中的代码把一切都搞糟了

顺便说一句,元素确实通过CSS设置了宽度和浮点值——宽度:80%,浮点值:左。但是浏览器控制台仍然给了我正确的宽度

谢谢。

试试看

$('.element').outerWidth();
如果有帮助,请告诉我试试以下方法:

$(window).load(function(){
    alert( $('.element').width() );
});

有时,您必须处理属性,考虑填充和边距的额外大小。像
innerWidth
这样的命令负责元素的填充,但是
outerWidth
对应于它的边框的大小计数(如果接收到true,它们的边距也是)

看看这个已经结束的话题,我希望这对你有所帮助:

原因 .width()方法取决于浏览器的设置。浏览器在运行时回流并重新绘制DOM对象。对HTML文档的可视更改也会触发回流和重新绘制

由于这些原因,
.width()
方法将在浏览器状态期间返回零(
0
)值,此时回流和重新绘制仍将发生

解决方案 回流和重新喷漆后,始终调用
.width()
方法

常见案例 案例1。文档准备与窗口加载 在
$(document.ready
期间,DOM对象已准备好进行操作。但是,浏览器仍在进行回流和重新绘制。因此,您很有可能获得
.width()
=
0

$(window).load(function(){
    // during this state, .width() is more likely to have the right values
});
$(window.load)
处,DOM对象已准备好进行操作,浏览器已完成回流,并已重新绘制文档上的所有内容

案例2。隐藏与显示 HTML

<div style="display:none">
    <button>Foo</button>
</div>

同样,要解决零宽度问题,请在回流和重新喷漆后始终调用
.width()
方法。

同样的事情。如果像素大小为100%宽度,则警报将显示像素大小。但是控制台在80%的屏幕上显示正确的宽度值。是的。它位于document.ready function中,不适用于这两个函数。这只是()宽度,一个用CSS设置为屏幕80%的宽度,我不想获取像素宽度;首先,它做同样的事情…尝试编辑。。。在dom就绪后,是否将元素动态加载到元素中?元素中有图像吗?那么我到底错过了什么,因为它工作得很完美。:)我没有意识到我需要将其放在.load()vs.ready()中……当dom就绪时,html元素已经在dom中完成构建。dom就绪后加载图像和其他内容。通过将其放入window.load,您可以等待它们完全加载后再创建下一个事件。这里有一些文档:Dope!感谢您的修复、解释和链接。你太棒了!
<div style="display:none">
    <button>Foo</button>
</div>
// still hidden
$('button').width(); // 0

// now shown
$('div').show();
$('button').width(); // right value