有没有办法用jquery读出图像的"naturalWidth"?

Val*_*liL 17 jquery

我尝试过这样的事情:

var Height = $(this).naturalHeight;
Run Code Online (Sandbox Code Playgroud)

但它不起作用.有没有办法做到这一点

greez

Ruw*_*wen 43

我在应用jQuery然后剥离jQuery后使用本机javascript属性

.naturalWidth/.naturalHeight

在我使用的jQuery对象上

var width = this.naturalWidth; 
var height = this.naturalHeight;
Run Code Online (Sandbox Code Playgroud)

要么

var width = $("selector").get(0).naturalWidth; 
var height = $("selector").get(0).naturalHeight;
Run Code Online (Sandbox Code Playgroud)

如果没有选择jQuery对象.

使用jQuery对象上的get(0),您可以访问关联的DOM元素.在本机DOM元素上,您可以使用本机JavaScript代码(此处访问nativ javascript属性.naturalWidth)


小智 8

在我看来,接受的解决方案会修改对象的外观.有时jQuery有点太有用了,你必须告诉它你的方式.如果要使用naturalWidth或naturalHeight,则只需使用已存在的那个,方法是将jQuery对象转换为本机浏览器元素引用.

var Height = document.getElementById($(this).attr("id")).naturalHeight;
Run Code Online (Sandbox Code Playgroud)

  • 为什么不简单地说'this.naturalHeight`? (28认同)
  • 我同意ThiefMaster.这个答案是可怕的代码.`this.naturalHeight`更快,更紧凑,适用于所有对象,而不仅仅是具有id的对象. (6认同)
  • 如果您已经在使用jQuery,则$(this)[0]是HTMLElement实例,或$(this).get(0).任何一个都比重复getElementById调用更好,因为jQuery已经为你完成了.有些(通常不是跨浏览器)属性只能从本机HTMLElement类而不是jquery-wrapped实例访问. (5认同)
  • $( '选择')[0] .naturalHeight (2认同)

ctr*_*yan -15

$this.css('height', 'auto');
var height = $this.height();
Run Code Online (Sandbox Code Playgroud)

  • $(this)[0].naturalHeight 将在现代浏览器中工作,但从 IE6-IE8 开始,您应该创建一个新的图像元素并从中获取宽度和高度。仅当该样式具有最高特异性(不一定具有)时,将 css 设置为“auto”才会起作用。此外,图像元素和父元素的显示也会影响它(任何祖先元素上的 display:none 都会导致它返回 0)。 (8认同)