JQuery obtient la largeur maximale des div. Enfant

Je dois obtenir la largeur maximale (juste une largeur) de la division enfant dans l'élément div diviseur

<div id="wrapper"> <div class="image"><img src="images/1.jpg"></div> <div class="image"><img src="images/2.jpg"></div> <div class="image"><img src="images/3.jpg"></div> <div class="image"><img src="images/4.jpg"></div> <div class="image"><img src="images/5.jpg"></div> <div class="image"><img src="images/6.jpg"></div> </div> 

 Math.max.apply(Math, $('.image').map(function(){ return $(this).width(); }).get()); 

Par suggestion, je vais rompre ça:

 $('.image').map(function(){ return $(this).width(); }).get(); 

Ce qui précède permet d'obtenir une liste de toutes les .image et la convertit en une liste de leurs largeurs. Vous aurez alors quelque chose comme: [200, 300, 250, 100, 400] . Le .get() , comme l'a souligné Felix, est nécessaire pour obtenir un tableau réel au lieu d'un tableau jQuery.

Math.max prend N arguments, donc vous devez l'appeler comme: Math.max(200, 300, 250, 100, 400) , ce qui est accompli par la partie Math.max.apply .

Une fonction d'exemple pas si difficile à considérer; Pas aussi élégant que les loups, mais probablement plus facile à suivre si vous êtes un débutant.

 function getMaxChildWidth(sel) { max = 0; $(sel).children().each(function(){ c_width = parseInt($(this).width()); if (c_width > max) { max = c_width; } }); return max; } 

http://jsfiddle.net/userdude/rMSuJ/1/

J'aime cette approche car elle frappe le point sucré (IMHO) entre la lisibilité et la brièveté du noyau:

 var max_w = 0; $('#wrapper div.image').each(function() { max_w = Math.max(max_w, parseInt($(this).width())); }) 

YMMV bien sûr.