Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript$.Map()&;Math.Max.Appy()以查找最大高度 以下代码是用于查找最大高度的工作代码 $.fn.用于将此方法添加为jQuery插件 $.Map()返回新数组_Javascript_Jquery - Fatal编程技术网

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

Javascript$.Map()&;Math.Max.Appy()以查找最大高度 以下代码是用于查找最大高度的工作代码 $.fn.用于将此方法添加为jQuery插件 $.Map()返回新数组,javascript,jquery,Javascript,Jquery,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, i

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(这个函数(el){return$(el)[fn](边距);})

  • $(el)[fn](边距)
    //尤其是这行如何返回图像的高度属性

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

    $(el)[fn](页边距)
    与具有
    $(el).高度(页边距)
    $(el).outerHeight(页边距)
    的值相同,取决于
    fn
    的值,该值取决于参数
    outer
    的值

    outer
    不正确时,
    fn
    将是
    的“outerHeight”
    ,并且上述语句将等效于
    $(el)。outerHeight(边距)


    outer
    是falsy时,
    fn
    将是
    “height”
    ,上述语句将相当于
    $(el).height(margins)
    *编辑以合并Felix Kling的注释

    好的,让我们把它分解一下

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

    $.map([1,2], function(i) {return i + 1})
    [2, 3]
    
  • this
    引用jQuery集合
    $.fn.fn()
    所针对的集合。 例如:

    $('tr').tallest() // => this would refer to all the tr's within the dom
    
  • $(el)[fn]

    在JavaScript中,您可以使用常规的点表示法调用绑定到接收器的函数,例如
    $(e1)。height
    ,也可以使用括号表示法,如您提供的示例所示:
    $(e1)['height']

  • $(e1)[fn](页边距)

    margins
    是传递给函数
    height()
    的参数


  • 希望这有帮助。

    您的表达式中似乎缺少方括号。它可能应该是
    $(el)[fn]
    。您可以使用点符号或括号符号访问对象属性。请参阅。
    $(el).fn(边距)
    在我看来有点误导。@mattwipple-当然,它不是真正意义上的翻译。但是从代码阅读的角度来看,这样解释更容易。@techfoobar,是的,我的评论是在早期版本中写的,当时有一个明显的暗示,
    $(el).fn
    可以工作,因此可以与方括号表示法互换。这与编辑后的答案不相关。我将避免调用
    $(el)[fn]
    “数组表示法”。这与数组无关,可能会让经验不足的读者感到困惑。官方名称为“括号符号”。