Ответ 1
$(".object").attr("level")
просто вернет атрибут первого первого элемента .object
.
Это даст вам массив всех level
s:
var list = $(".object").map(function(){return $(this).attr("level");}).get();
У меня есть класс .object
, который имеет атрибут level
. Я хочу получить список всех различных значений level
на странице, чтобы я мог выбрать самый высокий.
Если я сделаю что-то вроде:
$(".object").attr("level")
... это даст мне список значений, которые являются значениями атрибута уровня? Я подозреваю, что нет, но тогда как вы делаете что-то подобное?
Примечание: Я не хочу выбирать объект HTML для манипуляции, поскольку это более распространено, скорее я хочу выбрать значения атрибута.
EDIT: Чтобы получить самый высокий уровень, я сделал это, но он, похоже, не работает. Я попробую другой предложенный метод.
var highLevel=0;
$.each(".object[level]", function(i, value) {
if (value>highLevel) {
highLevel=value;
}
});
alert(highLevel);
$(".object").attr("level")
просто вернет атрибут первого первого элемента .object
.
Это даст вам массив всех level
s:
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 );
селектор
$(".object[level]")
предоставит вам все элементы dom с классом object
и атрибутом level
.
Затем вы можете просто использовать метод .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".
Здесь другое решение, объединяющее несколько других ответов от 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 и добавить свою собственную реализацию 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")