Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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 jQuery width()在加载时不正确_Javascript_Jquery - Fatal编程技术网

Javascript jQuery width()在加载时不正确

Javascript jQuery width()在加载时不正确,javascript,jquery,Javascript,Jquery,当我加载页面并使用$('div.logo').width()时,它返回一个巨大的值6500,这是不正确的。图像只有130像素宽 但是,如果我使用setTimeout并在几秒钟后检查$('div.logo').width(),它将返回正确的宽度 为什么会这样?我所有的CSS都应该已经加载了,那么为什么几秒钟的暂停会产生不同呢?这是因为图像还没有加载,所以初始大小是基于CSS或猜测的。您可以使用: $('.logo img').load(function() { var width = $(th

当我加载页面并使用
$('div.logo').width()
时,它返回一个巨大的值
6500
,这是不正确的。图像只有130像素宽

但是,如果我使用
setTimeout
并在几秒钟后检查
$('div.logo').width()
,它将返回正确的宽度


为什么会这样?我所有的CSS都应该已经加载了,那么为什么几秒钟的暂停会产生不同呢?

这是因为图像还没有加载,所以初始大小是基于CSS或猜测的。您可以使用:

$('.logo img').load(function() {
  var width = $(this).width();
});

这是因为图像尚未加载,所以初始大小基于CSS或猜测。您可以使用:

$('.logo img').load(function() {
  var width = $(this).width();
});

加载图像后,必须检查图像宽度

因此,要么:

// NOTE: not $(document).ready
$(window).load(function() {
  var width = $('.logo img').width();
});


应提供正确的宽度。

加载图像后,必须检查图像宽度

因此,要么:

// NOTE: not $(document).ready
$(window).load(function() {
  var width = $('.logo img').width();
});


应该给出正确的宽度。

图像正在使用
GET
方法加载, 所以你需要检查一下

$('.logo img').load(function(){
  //your code
});
如果您想立即加载图像,可以使用BASE64图像。
要了解更多详细信息,请使用
GET
方法加载图像, 所以你需要检查一下

$('.logo img').load(function(){
  //your code
});
如果您想立即加载图像,可以使用BASE64图像。
有关详细信息

请为图像设置
宽度
高度
属性。您也可以在CSS中指定大小。然后浏览器将知道图像加载前的大小。

设置图像的
宽度
高度
属性。您也可以在CSS中指定大小。然后浏览器将知道图像在加载之前的大小。

它可以是修改页面布局的javascript,例如,它可以是页面底部包含的脚本标记,或者在JQuery就绪或加载事件上执行的任何其他javascript代码。例如,如果此代码附加html代码,则可能会影响您的.logo div的宽度


另一种可能是您的html不正确,要检查这一点,只需运行任何类似这样的html验证程序。从页面获取HTML进行验证时,请注意某些浏览器修复了不正确的HTML,因此最好从源代码获取。

可以是修改页面布局的javascript,例如,可以是页面底部包含的脚本标记,也可以是在JQuery ready或load事件上执行的任何其他javascript代码。例如,如果此代码附加html代码,则可能会影响您的.logo div的宽度



另一种可能是您的html不正确,要检查这一点,只需运行任何类似这样的html验证程序。从页面获取HTML进行验证时,请注意某些浏览器修复了不正确的HTML,因此最好从源代码获取。

这是代码运行时图像未加载的原因。您何时使用
$('.logo img').width()检查
宽度
?检查时可能未加载图像。这是代码运行时未加载图像的原因。您何时使用
$('.logo img').width()检查
宽度
?检查时可能未加载图像。不,这不是问题所在。这也发生在
$('.logo').width()上。
.logo
是一个内部有图像的div。@NicHubbard,这就是原因。不,这不是问题所在。它发生在
$('.logo').width()
上。
.logo
是一个内部有图像的div。@NicHubbard,这就是原因。
.width()
将获得计算的宽度,而不是属性width:@mikeddt如果您设置
img
标记的
width
属性,然后它实际上是
宽度
当浏览器显示时
img
将具有的宽度,因此它是计算出的宽度。设置图像的
宽度
高度
也是一种很好的做法,这样浏览器在加载图像之前就知道了。@t.niese这是正确的,但是如果OP CSS设置
最大宽度:100%
,那么该值就不正确。@mikeddt如果OP将CSS设置为
最大宽度:100%
,图像的宽度为
130px
,然后容器的宽度为
100px
$('div.logo')。width()
将返回
100
。但是在这两种情况下都会发生这种情况(无论是否设置了
width
attr)。啊,感谢您的澄清。我同意设置
宽度
/
高度
属性是一种很好的做法。这里的示例如果有人感兴趣:
.width()
将获得计算宽度,而不是属性width:@mikeddt如果您设置
img
标记的
width
attr,那么它实际上是
img
在浏览器显示时所具有的
width
,因此它是计算宽度。设置图像的
宽度
高度
也是一种很好的做法,这样浏览器在加载图像之前就知道了。@t.niese这是正确的,但是如果OP CSS设置
最大宽度:100%
,那么该值就不正确。@mikeddt如果OP将CSS设置为
最大宽度:100%
,图像的宽度为
130px
,然后容器的宽度为
100px
$('div.logo')。width()
将返回
100
。但是在这两种情况下都会发生这种情况(无论是否设置了
width
attr)。啊,感谢您的澄清。我同意设置
宽度
/
高度
属性是一种很好的做法。如果有人感兴趣,请在此举例: