Javascript $ .Map()& Math.Max.Apply()找到最大高度

时间:2013-02-22 13:42:04

标签: javascript jquery

  • 以下代码是用于查找最大高度的工作代码
  • $.fn.用于将此方法添加为jQuery插件。
  • $.Map()返回新数组
  • Math.Max.Apply从数组返回最大数字

    $.fn.tallest = function(outer, margins) {
    
        var fn = outer ? "height" : "outerHeight";
    
        return Math.max.apply(Math, $.map(this, function(el){return $(el)[fn](margins);}));
    
    };
    
    //var images=jquery(img 1.jpg, img 2.jpg, img 3.ipg, img 4.jpg);
    var slidesHeight = images.tallest();
    
  • 在这个我无法理解下面的行,但是要明白 如何.Map()有效 $.map(this, function(el) {return $(el)[fn](margins);})

  • $(el)[fn](margins) //特别是此行如何返回图片的高度属性。

2 个答案:

答案 0 :(得分:1)

$(el)[fn]只是在$(el)中调用方法的另一种方法,其名称事先未知。

$(el)[fn](margins)$(el).height(margins)$(el).outerHeight(margins)相同,具体取决于fn的值,该值取决于参数outer的值。< / p>

outer为非虚假时,fn将为"outerHeight",上述陈述将等同于$(el).outerHeight(margins)

如果outer是假的,fn将是"height",上述陈述将等同于$(el).height(margins)

答案 1 :(得分:0)

*编辑加入Felix Kling的笔记。

好的,让我们把它分解

$.map(this, function(el){return $(el)[fn](margins);})
  1. $.map是一个迭代集合并对集合中的每个元素执行传入函数并返回包含所有结果的数组的函数。
    例如:

    $.map([1,2], function(i) {return i + 1})
    [2, 3]
    
  2. this指的是jQuery集合$.fn.tallest()正在反对的集合。 例如:

    $('tr').tallest() // => this would refer to all the tr's within the dom
    
  3. $(el)[fn]
    在JavaScript中,您可以使用常规点表示法调用绑定到接收器的函数,例如$(e1).height,或者您可以使用括号表示法作为您提供的示例:$(e1)['height']

    < / LI>
  4. $(e1)[fn](margins)
    margins是函数height()的传入参数。

  5. 希望这有帮助。