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


86

我有一个.object具有名为的属性的类level。我想获取level页面上所有不同值的列表,以便选择最高的值。

如果我做类似的事情:

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

...那会给我一个列为level属性值的值列表吗?我怀疑不是,但是那你该怎么做呢?

注意:我不想像更常见的那样选择HTML对象进行操作,而是想选择属性的值。

编辑:为了获得最高的“级别”,我已经做到了,但是似乎没有用。我将尝试其他建议的方法。

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

alert(highLevel);

5
@Ankur,您应该选择以下其中一个作为该问题的答案
Nathan Koop

Answers:


195

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

这将为您提供所有level的数组:

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

6
怎么.get()办?
虞姬“富田”富田

21
@Yuji-get将jQuery对象转换为常规数组。
科比2012年

@MandeepJain:如何将答案标记为“正确”?可能没有将此标记为“已接受”,但是有100多个人将其投票为“有用”,这对我来说已经足够了!
Michael Scheper

1
好答案。对我而言,更直观/更清洁的方法是首先.get()访问数组,然后使用.map()加号箭头功能(浏览器支持:caniuse.com/#search=arrow)使用简单的javascript构建数组:$(".object").get().map(x => x.getAttribute('level'));
elPastor


3
<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”警报。

这是另一个解决方案,结合了来自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);
});

2

选择器

$(".object[level]")

将为您提供具有类object和属性的所有dom元素level

然后,您可以仅使用.each()方法对元素进行迭代以获取最高价值


$(".object[level=something]") 您在寻找什么属性值
James

0

您可以扩展Jquery的功能并添加自己的“ 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")
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.