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

Posted

技术标签:

【中文标题】jQuery - 从类的元素中获取属性值的列表【英文标题】:jQuery - get a list of values of an attribute from elements of a class 【发布时间】:2011-02-14 18:58:35 【问题描述】:

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

如果我这样做:

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

... 这会给我一个作为级别属性值的值列表吗?我怀疑不是,但是你怎么做这样的事情?

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

编辑:为了获得最高的“级别”,我这样做了,但它似乎不起作用。我现在将尝试其他建议的方法。

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

alert(highLevel);

【问题讨论】:

@Ankur 你应该选择其中之一作为这个问题的答案 【参考方案1】:

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

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

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

【讨论】:

.get() 有什么作用? @Yuji - get 将 jQuery 对象转换为常规数组。 @MandeepJain:如何将答案标记为“正确”?这个可能没有被标记为“接受”,但超过 100 人投票认为它“有用”,这对我来说已经足够了! 很好的答案。对我来说更直观/更简洁的是先.get() 数组,然后使用.map() 加上箭头函数(浏览器支持:caniuse.com/#search=arrow)用一点普通的javascript构建数组:$(".object").get().map(x => x.getAttribute('level'));【参考方案2】:

问题的第一部分,将属性值放入数组中。看到这个问题

jQuery get img source attributes from list and push into array

你会说

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

问题的第二部分,可以使用this technique to get the highest value

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

【讨论】:

【参考方案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);
);

【讨论】:

【参考方案4】:

选择器

$(".object[level]")

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

然后你可以只使用 .each() 方法遍历元素以获得最高值

【讨论】:

$(".object[level=something]") where something 是您要查找的属性值【参考方案5】:

您可以extend the functionality of 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")

【讨论】:

以上是关于jQuery - 从类的元素中获取属性值的列表的主要内容,如果未能解决你的问题,请参考以下文章

jQuery如何获取指定的属性值

jQuery中attr()方法用法实例

在没有很多 jQuery 请求的情况下获取传递的元素属性和属性

JS获取元素值

如何使用jquery获取元素的title属性并将其插入到元素之后?

c# 如何获取列表中某个属性最大或最小的元素?