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

时间:2010-05-02 15:58:16

标签: jquery css-selectors

我有一个类.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 个答案:

答案 0 :(得分:179)

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

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

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

答案 1 :(得分:26)

问题的第一部分,将属性值转换为数组。看到这个问题

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

答案 2 :(得分: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);
});

答案 3 :(得分:2)

选择器

$(".object[level]")

将为您提供包含课程object和属性level的所有dom元素。

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

答案 4 :(得分:0)

您可以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")