jQuery min/max property from array of elements

前端 未结 8 1449
陌清茗
陌清茗 2020-11-29 02:09

Is there a simple way to find the min/max property from an array of elements in jQuery?

I constantly find myself dynamically resizing groups of elements based on the

相关标签:
8条回答
  • 2020-11-29 02:15

    I wrote a simple plugin to do exactly this - see gregbrown.co.nz/code/jquery-aggregate . With it installed, you could do:

    var maxWidth = $('img').aggregate('width', 'max');

    0 讨论(0)
  • 2020-11-29 02:20

    Take a look at the calculation plugin, maybe it can help you with your problems. They offer a number of math functions, like min, max and avg on DOM-elements.

    Examples:

    $("input[name^='min']").min();
    $("input[name^='max']").max();
    
    0 讨论(0)
  • 2020-11-29 02:20

    You can use native "sort" function to have more control over which elements are compared

    Array.prototype.deepMax = function(comparator){
      if(typeof comparator === 'function'){
        var sorted = this.slice(0).sort(comparator);
        return sorted[sort.length - 1];
      }
      return Math.max.apply(Math, this);
    };
    

    and you can call it like

    var maxWidth = $('img').deepMax(function(a, b){
      //-1 if a < b; +1 otherwise
      return $(a).width() - $(b).width();
    });
    

    OR

    you can use _.max of Underscore which is can be implemented like...

    Array.prototype.max = function(iterator){
      if(!iterator && obj[0] === +obj[0])
        return Math.max.apply(Math, this);
      var result = -Infinity, lastComputed = -Infinity;
      this.forEach(function(value, index){
        var computed = iterator ? iterator(value, index, this) : value;
        computed > lastComputed && (result = value, lastComputed = computed);
      });
      return result;
    };
    
    var maxWidth = $('img').max(function(val){ return $(val).width();});
    
    0 讨论(0)
  • 2020-11-29 02:21

    Rolled up as a plugin to return min-max of width and height:

    // Functions to get the Min & Max value in Array
    
    if (!Array.min) { Array.min = function( array ){return Math.min.apply( Math, array )} }
    if (!Array.max) { Array.max = function( array ){return Math.max.apply( Math, array )} }
    
    (function( $ ){     // Standard jQuery closure to hide '$' from other libraries.
    
        // jQuery plug-in to get the min and max widths of a set of elements
    
        $.fn.dimensionsMinMax = function(whnx) {
    
        /*
        ################################################################################
    
        Name
        ====
    
            dimensionsMinMax(whnx) - jQuery plug-in to get min & max width & height
    
        Parameters
        ==========
    
            whnx - A 4-element array to receive the min and max values of the elements:
                whnx[0] = minimum width;
                whnx[1] = maximum width;
                whnx[2] = minimum height;
                whnx[3] = maximum height.
    
        Returns
        =======
    
            this - so it can be "chained".
    
        Example
        =======
    
            var minmax = new Array(4);
            var number_of_images = $('img').dimensionsMinMax(minmax).class('abc').length;
            console.log('number of images = ', number_of_images);
            console.log('width  range = ', minmax[0], ' to ', minmax[1]);
            console.log('height range = ', minmax[2], ' to ', minmax[3]);
    
        ################################################################################  
        */
            var  widths = new Array(this.length);
            var heights = new Array(this.length);
    
            this.each(function(i){
                $this      = $(this);
                 widths[i] = $this.width();
                heights[i] = $this.height(); 
            });
    
            whnx[0] = Array.min( widths);
            whnx[1] = Array.max( widths);
            whnx[2] = Array.min(heights);
            whnx[3] = Array.max(heights);
    
            return this;
        }
    
    })( jQuery );   // End of standard jQuery closure.
    
    0 讨论(0)
  • 2020-11-29 02:23

    The Plugins/Authoring page actually has an example for determining the tallest element.

    It's basically what you have here, just rolled into a plugin for easy access. Maybe you could appropriate it for your uses.

    0 讨论(0)
  • 2020-11-29 02:29

    Use Fast JavaScript Max/Min - John Resig

    Example with three logos of google, yahoo and bing.

    HTML

    <img src="http://www.google.co.in/intl/en_com/images/srpr/logo1w.png" alt="Google Logo" /><br/>
    <img src="http://l.yimg.com/a/i/ww/met/yahoo_logo_in_061509.png" alt="Yahoo Logo" /><br/>
    <img src="http://www.bing.com/fd/s/a/h1.png" alt="Bing Logo" />
    

    Javascript

    $(document).ready(function(){
        // Function to get the Max value in Array
        Array.max = function( array ){
            return Math.max.apply( Math, array );
        };
    
        // Function to get the Min value in Array
        Array.min = function( array ){
           return Math.min.apply( Math, array );
        };
    
        //updated as per Sime Vidas comment.
        var widths= $('img').map(function() {
            return $(this).width();
        }).get();
    
        alert("Max Width: " + Array.max(widths));
        alert("Min Width: " + Array.min(widths));
    });
    

    P.S: jsfiddle here

    0 讨论(0)
提交回复
热议问题