Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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
使用jQuery动态创建图像并检索维度_Jquery_Image_Dom_Image Size - Fatal编程技术网

使用jQuery动态创建图像并检索维度

使用jQuery动态创建图像并检索维度,jquery,image,dom,image-size,Jquery,Image,Dom,Image Size,所以我动态地创建了一个图像,我希望得到图像的尺寸。是否可以在将图像附加到DOM之前执行此操作?目前我正在这样做: var arrow = $('<img src="' + parameters.arrowRight + '" />'); arrow.load(function() { console.log("size: " + $(this).height() + " " + $(this).width()); }); var arrow=$(''); l

所以我动态地创建了一个图像,我希望得到图像的尺寸。是否可以在将图像附加到DOM之前执行此操作?目前我正在这样做:

 var arrow = $('<img src="' + parameters.arrowRight + '" />');
 arrow.load(function() {  
      console.log("size: " + $(this).height() + " " + $(this).width());
  });
var arrow=$('');
load(函数(){
log(“大小:”+$(this.height()+”+$(this.width());
});

但是高度和宽度都报告为零。实际上正在获取图像,因为我可以在firebug中看到GET请求。

否。在将任何元素附加到DOM之前,都不可能获取其尺寸

一种解决方法是给图像添加css:
左边距:-10000px
。然后可以附加它,但它将不可见。然后,您可以获取其尺寸,并根据需要进行处理。

也许这将有助于:

此方法是.bind('load',handler)的快捷方式

加载事件在元素和所有子元素完全加载后发送给元素。此事件可以发送到与URL关联的任何元素:图像、脚本、帧、iFrame和窗口对象

例如,考虑一个具有简单图像的页面:

<img src="book.png" alt="Book" id="book" />

谁曾投过反对票:为什么?这是获取非DOM插入元素的维度的唯一解决方案。有更好的主意吗?发布它。@Rorymcrossan我试图在附加到DOM后获取它的维度,但它似乎不起作用。当你说“附加到DOM”时,你的意思是(我就是这么做的):
img=document.createElement(“img”);img.src=s$"imgwrapper".appendChild(img),其中
s
是动态加载的图像源。我想在本例中,我已经将图像附加到DOM中,但是当我尝试
$(“#imgwrapper”).find('img').css('width')
)时,仍然得到0。有什么想法吗?试试
height()
$('imgwrapper')。找到('img')。height()
。如果这不起作用,最好是你开始一个新问题。没用。我在这里问了一个新问题:我正在使用load事件,问题是元素是动态创建的,在呈现页面中可见的图像之前,我需要尺寸。嗯,我必须承认我在发布它时看到了其他东西,对不起。我现在很惭愧;)事实上,我做了一些测试,上述解决方案是最好的解决方案,但我也发现(我认为)这个主题非常相似:
$('#book').load(function() {  
   // Handler for .load() called.  
});