2010-05-02 99 views
70

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

如果我做这样的事情:

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

...会是让我属于级别属性的值,值的列表?我怀疑不是,但那你怎么做那样的事情?

注意:我不想选择一个HTML对象进行操作,因为它更常见,而我想选择属性的值。

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

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

alert(highLevel); 
+0

看到更新! – 2010-05-02 17:30:46

+4

@Ankur你应该选择其中的一个作为这个问题的答案 – 2012-11-13 16:53:32

回答

156

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

这将让你的所有level组成的数组:

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

'.get()'做了什么? – 2012-10-04 17:23:09

+16

@Yuji - ['get'](http://api.jquery.com/get/)将jQuery对象转换为常规数组。 – Kobi 2012-10-04 17:54:14

+5

为什么这个标记不正确? – 2014-06-06 12:09:09

2

选择

$(".object[level]") 

会给你所有object类的DOM元素和属性level

然后,你可以使用。每()方法来遍历元素,以获得最高价值的问题

+0

'$(“。object [level = something]”)'其中something是您要查找的属性值 – James 2014-06-30 18:10:13

2
<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”提醒我。

这里的另一种解决方案,结合其他几个答复从哈波,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); 
}); 
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") 
相关问题