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")