2011-04-21 104 views
1

我有一个图像元素的数组,我想找到最大的高度值。jQuery获取数组的特定属性

所以,如果我有

[ 
    <img src="image1.jpg" width="300" height="400" />, 
    <img src="image2.jpg" width="200" height="500" />, 
    <img src="image3.jpg" width="100" height="200" /> 
] 

我需要的数量是500

达到此目的的最佳方法是什么?

回答

2

您也可以尝试这种策略,假设你的图像存储在阵列“IMGS”:

var maxHeight = Math.max.apply({}, imgs.map(function(x){return x.height})); 
maxHeight; // => 500 
+0

该代码不太正确,但其背后的想法正是w我正在寻找的帽子。谢谢。 – 2011-04-29 04:54:06

4

我假设你真的有一个img元素实例(你已经显示的可以采取任何方式,元素或字符串,但你没有引用它们,所以...)的数组。

你也可以使用jQuery的$.each

var maxHeight = -1; 
$.each(theArray, function() { 
    if (maxHeight < this.height) { 
     maxHeight = this.height; 
    } 
}); 

或者,如果你已经有了阵列包裹在一个jQuery对象:

var theArray = $('img'); // A jQuery object wrapped around an array of all `img`s 

...那么你可以使用each(这是稍微不同于$.each):

var maxHeight = -1; 
theArray.each(function() { 
    if (maxHeight < this.height) { 
     maxHeight = this.height; 
    } 
}); 

或者只是使用一个无聊的老式循环:

var index, maxHeight; 
maxHeight = -1; 
for (index = 0; index < theArray.length; ++index) { 
    if (maxHeight < theArray[index].height) { 
     maxHeight < theArray[index].height; 
    } 
} 

在上述所有的,我已经使用了HTMLImageElementheight property由DOM指定。或者,您可能更喜欢jQuery的height()函数(如果是这样,不要忘记将元素包装在jQuery对象  —,例如$(this).height()),但通常height(属性)是您需要的所有元素和img元素。

0

比方说,你的图像在一个阵列称为:

a.sort(function(a,b) {return $(a).height() < $(b).height() }) ; 
alert($(a[0]).height()) ; 

确保你的图像标签有单引号:

a = [ 
    '<img src="image1.jpg" width="300" height="400" />', 
    '<img src="image2.jpg" width="200" height="500" />', 
    '<img src="image3.jpg" width="100" height="200" />' 
] ; 
+0

这很好,但如果数组真的很长,那么这个解决方案的性能会很差,因为它是'O(n * lg(n))',而其他的是'O(n)'。但实际上,对于“少量”图像可能并不重要。 – maerics 2011-04-21 06:46:00