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(这个函数(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]
“数组表示法”。这与数组无关,可能会让经验不足的读者感到困惑。官方名称为“括号符号”。