Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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 检索更新图像src的自然宽度_Javascript_Jquery - Fatal编程技术网

Javascript 检索更新图像src的自然宽度

Javascript 检索更新图像src的自然宽度,javascript,jquery,Javascript,Jquery,我正在Rails4中使用jQuery更新图像的src。我也用回形针上传图像 流程:当我第一次单击图像时,它返回拇指宽度(140px)。但是,随后的单击将返回原始图像的自然宽度(1200px) 是否有可能在第一时间获得原始图像的自然宽度 请告知 等待图像加载。图像加载完成后,将调用处理程序 每次更改图像的src属性时,都会触发此事件 试试这个: $(“.photo”)。在('click',function()上{ this.src=this.src.replace(/thumb/g,'origi

我正在Rails4中使用jQuery更新图像的src。我也用回形针上传图像

流程:当我第一次单击图像时,它返回拇指宽度(140px)。但是,随后的单击将返回原始图像的自然宽度(1200px)

是否有可能在第一时间获得原始图像的自然宽度

请告知

等待图像加载。图像加载完成后,将调用处理程序

每次更改
图像的
src
属性时,都会触发此事件

试试这个:

$(“.photo”)。在('click',function()上{
this.src=this.src.replace(/thumb/g,'original');
var img=新图像();
img.onload=函数(){
警报(此为自然宽度);
}
img.src=this.src;
}
$(“.photo”)。在('click',function()上{

$("等待图像加载..您需要等待图像加载。挂钩到
img
元素的
load
事件。它很可能对第一个图像有效,因为它已被缓存。感谢您的回复。
img.src=this.src;
?我只需要naturalWidth值。对于您的代码,我无法获取它第一次。
img.src=this.src;
将设置
新图像()的
src
属性
对象,它将调用
onload
事件..创建一个示例,上面的代码失败了第一次单击时获取naturalWidth太激动了,但是如何在外部函数中使用该值?我尝试了
警报(img.naturalWidth);
在单击函数中,但在第一次单击后返回0。这是不正确的,因为它将等待整个图像加载,并且自然宽度和自然高度的更新要快得多。这意味着您将在图像加载时继续使用旧尺寸(可能会以不同的纵横比显示拉伸的图像),并且只在最后更新它,当它开始加载时,您几乎总是希望正确地更新它。我正在查看您的帖子。“仅代码”答案不是一个好主意,除非他们解释问题是如何回答的/问题是在代码中以注释的形式来解决的。是的,你是正确的,顺便说一下,这是我第一次在StAccOppForm中的ANZ,我将对我的建议进行评论。请考虑阅读,以提高你未来答案的质量。谢谢你的链接
$(".photo").on('click', function(){
    this.src = this.src.replace(/thumb/g, 'original');
    alert(this.naturalWidth);
}
 $(".photo").on('click', function(){
          $("<img/>")  
                .attr("src", $(this).attr("src"))
                .load(function() { 
                    alert(this.width)
                    alert(this.height)
                });  

});