jQuery – 从类的元素中获取属性的值列表

我有一个类.object有一个属性称为level 。 我想获得页面上所有不同值的列表,所以我可以select最高的一个。

如果我做这样的事情:

 $(".object").attr("level") 

…会给我一个价值清单,这是价值的水平属性? 我怀疑不是,但那你怎么做这样的事情呢?

注意:我不想select一个更为常见的HTML对象进行操作,而是要select属性的值。

编辑:为了获得最高的“水平”,我做了这个,但似乎并没有工作。 我现在会尝试其他build议的方法。

 var highLevel=0; $.each(".object[level]", function(i, value) { if (value>highLevel) { highLevel=value; } }); alert(highLevel); 

$(".object").attr("level")将只返回第一个.object元素的属性。

这会给你一个所有level的数组:

 var list = $(".object").map(function(){return $(this).attr("level");}).get(); 

问题的第一部分,获取属性值到一个数组中。 看到这个问题

jQuery从列表中获取img源属性并将其推入数组

你会说

 var levelArray = $('.object').map( function() { return $(this).attr('level'); }).get(); 

问题的第二部分,你可以使用这种技术来获得最高的价值

 var maxValue = Math.max.apply( Math, levelArray ); 

select器

 $(".object[level]") 

将给你带有类object和属性level所有dom元素。

然后,您可以使用.each()方法迭代元素以获得最高值

 <script type="text/javascript"> var max = 0; jQuery(document).ready(function(){ jQuery('.object[level]').each(function(){ var num = parseInt($(this).attr('level'), 10); if (num > max) { max = num; } }); alert(max); }); </script> 

我假设这样的标记:

 <div class="object" level="1">placeholder</div> <div class="object" level="10">placeholder</div> <div class="object" level="20">placeholder</div> <div class="object" level="1000">placeholder</div> <div class="object" level="40">placeholder</div> <div class="object" level="3">placeholder</div> <div class="object" level="5">placeholder</div> 

对于我的代码,我得到“1000”提醒我。

这是另一个解决scheme,结合了来自harpo,lomaxx和Kobi的其他几个回复:

 jQuery(document).ready(function(){ var list = $(".object[level]").map(function(){ return parseInt($(this).attr("level"), 10); }).get(); var max = Math.max.apply( Math, list ); alert(max); }); 

您可以扩展Jquery的function并添加自己的“attrs”实现。

将以下代码行添加到JavaScript文件中:

 jQuery.fn.extend({ attrs: function (attributeName) { var results = []; $.each(this, function (i, item) { results.push(item.getAttribute(attributeName)); }); return results; } }); 

现在您可以通过调用以下方式获取关卡值列表:

 $(".object").attrs("level")