如何使用jquery查找选项的最大长度
我有一个选项选择,它是一个转换的选择,而不是正常的选择如何使用jquery查找选项的最大长度,jquery,Jquery,我有一个选项选择,它是一个转换的选择,而不是正常的选择 <select> <option value="0">apple</option> <option value="1">orange</option> <option value="2">bannan fruit</option> </select> 苹果 橙色 板南果 如何使用Jquery在选项(bannan水果)中找到最大长度?强制一行
<select>
<option value="0">apple</option>
<option value="1">orange</option>
<option value="2">bannan fruit</option>
</select>
苹果
橙色
板南果
如何使用Jquery在选项(bannan水果)中找到最大长度?强制一行解决方案:
var max_length = -1;
$('option').each(function(){
max_length = Math.max(max_length, $(this).text().length);
});
alert(max_length);
Math.max.apply(null, $('option').map(function() { return $(this).html().length; }).toArray())
我想说Dogbert的解决方案可能更具可读性,但这里可能还有一些有趣的教训。发生了什么事:
- 用于获得仅包含长度的结果集
- 使用从结果集中生成实际数组,这是
所需的。apply
- 使用
将数组传递给apply
,这将使第二个参数成为Math.max
集合,即相当于写入arguments
Math.max(5,6,12)代码>
Array.prototype.max = function() {
return Math.max.apply(null, this)
}
$('option').map(function() { return $(this).html().length; }).toArray().max();
强制性一行解决方案:
Math.max.apply(null, $('option').map(function() { return $(this).html().length; }).toArray())
我想说Dogbert的解决方案可能更具可读性,但这里可能还有一些有趣的教训。发生了什么事:
- 用于获得仅包含长度的结果集
- 使用从结果集中生成实际数组,这是
所需的。apply
- 使用
将数组传递给apply
,这将使第二个参数成为Math.max
集合,即相当于写入arguments
Math.max(5,6,12)代码>
Array.prototype.max = function() {
return Math.max.apply(null, this)
}
$('option').map(function() { return $(this).html().length; }).toArray().max();
您可以将jQuery对象的原型设置为:
jQuery.prototype.select_longest = function () {
var res = "";
$(this).children().each(function () {
if ($(this).html().length > res.length)
res = $(this).html();
});
return res; // use this line if you want biggest string
return res.length; // use this line if you want length of biggest string
}
var longest = $("#id").select_longest();
然后你可以这样使用它:
jQuery.prototype.select_longest = function () {
var res = "";
$(this).children().each(function () {
if ($(this).html().length > res.length)
res = $(this).html();
});
return res; // use this line if you want biggest string
return res.length; // use this line if you want length of biggest string
}
var longest = $("#id").select_longest();
您可以将jQuery对象的原型设置为:
jQuery.prototype.select_longest = function () {
var res = "";
$(this).children().each(function () {
if ($(this).html().length > res.length)
res = $(this).html();
});
return res; // use this line if you want biggest string
return res.length; // use this line if you want length of biggest string
}
var longest = $("#id").select_longest();
然后你可以这样使用它:
jQuery.prototype.select_longest = function () {
var res = "";
$(this).children().each(function () {
if ($(this).html().length > res.length)
res = $(this).html();
});
return res; // use this line if you want biggest string
return res.length; // use this line if you want length of biggest string
}
var longest = $("#id").select_longest();
@Simon Yes bannana水果串是选项中最大的文本…@Simon Yes bannana水果串是选项中最大的文本…只需将
.val()
更改为.text()
@Dogbert我尝试过使用max_length=Math.max(max_length,$(this).width());它在FF中工作,但在IE中宽度仍然为0…只需将.val()
更改为.text()
@Dogbert我尝试使用max_length=Math.max(max_length,$(this.width());它在FF中起作用,但在IE中,宽度仍然是0…+1,这是充分使用语言功能所必需的向上投票。(.toArray()
是正确的,但是多余的,因为jQuery对象实际上是一个数组-我想它应该是.text()
而不是.html()
)+1个强制投票,以确保足够的语言功能使用。(.toArray()
是正确的,但是多余的,因为jQuery对象实际上是一个数组——我想它应该是.text()
而不是.html()
)