Mo *_*our 13 javascript linq jquery max
我想知道如何编写一个jquery语句来获取匹配元素的属性的最大值.
在LINQ我们说这样的话:
var maxHeight = list.Max(a=> a.Height);
Run Code Online (Sandbox Code Playgroud)
在jquery中执行此操作的最佳方法是什么?
例如,假设我们要选择容器内所有:text元素的最大数值:
var allInputs = $("#container :text");
// how to get the max of parseInt(item.val())?
Run Code Online (Sandbox Code Playgroud)
当然,对所有元素进行循环是一个选项,但我很想知道是否有一个与jquery有关的魔法.
问候.
Igo*_*mov 14
其中一种可能的解决方案是使用map函数,然后使用Math.max结果:
var values = $.map($("input:text"), function(el, index) { return parseInt($(el).val()); });
var max = Math.max.apply(null, values);
Run Code Online (Sandbox Code Playgroud)
如果需要,可以写成一行.
小提琴:http://jsfiddle.net/WuVLr/1/
更新:
或者,您可以这样申请map:
var values = $("input:text").map(function(index, el) { return parseInt($(el).val()); }).get();
Run Code Online (Sandbox Code Playgroud)
根据这里的所有对话和我在网上的搜索,我们可以说(此时)没有强大的内置jquery方法来计算匹配选择器的元素属性的.max()和.min().
根据Igor的建议,我提出了以下两个jquery函数,如果需要反复使用.max()和.min()函数,可以将它们添加到项目中:
$.fn.max = function(selector) {
return Math.max.apply(null, this.map(function(index, el) { return selector.apply(el); }).get() );
}
$.fn.min = function(selector) {
return Math.min.apply(null, this.map(function(index, el) { return selector.apply(el); }).get() );
}
// Usage:
var maxWidth = $("a").max(function() {return $(this).width(); });
var minWidth = $("a").min(function() {return $(this).width(); });
Run Code Online (Sandbox Code Playgroud)
在这里看一个演示:http://jsfiddle.net/NF7v7/3/
| 归档时间: |
|
| 查看次数: |
16814 次 |
| 最近记录: |