在代码console.log下面会得到[<div class="a" id="0">0</div>, <div class="a" id="1">1</div>, ..]
如何知道兄弟div .a
的id值是最大的?
$('.a').hover(function(){
console.log('$('.a')');
},function(){});
HTML
<div class="a" id="0">0</div>
<div class="a" id="1">1</div>
<div class="a" id="2">2</div>
<div class="a" id="3">3</div>
答案 0 :(得分:6)
这是我能想到的最短代码:
var high = Math.max.apply(null, $('.a').map(function(_, el) {
return +el.id;
}));
如果您希望使用data-id
,只需将el.id
替换为$(el).data('id')
。
请注意,此方法不是“数据安全”,因为它在尝试查找最大值之前不会清理单个值。如果你在错误的元素(垃圾进入)上运行它,你将得到错误的答案(垃圾输出)。不要那样做。 ; - )
答案 1 :(得分:2)
首先,您不应该使用以数字开头的id。它们在HTML5中是正确的,但在许多工具和CSS中都存在问题。
但是如果你想获得id最大的元素,你可以这样做:
var me;
$('.a').each(function(){
var num = Number(this.id); // this ensures the id is only a number
if (num && !(me && me.id>num)) {
me = this;
}
});
现在假设您的ID为“a1”,“a2”等
然后你可以做
var me;
$('.a[id^="a"]').each(function(){
var num = Number(this.id.slice(1));
if (num && !(me && me.id.slice(1)>num)) {
me = this;
}
});
答案 2 :(得分:1)
我使用了不同的方法而不是id
我使用了data-id
// this var will store the element with the highest ID
var big;
$(".a").each(function() {
if (!big) // if big is not set, assume the first is the highest
big = this;
else
{
// retrieves the `data-id` from the element
// converts to integer and compare, re-assign big if needed
if (parseInt($(this).data("id")) > parseInt($(big).data("id")))
big = this;
}
});
// displays the `data-id` of the element with the highest value
alert($(big).data("id"));
html代码:
<div class="a" data-id="0">0</div>
<div class="a" data-id="30">30</div>
<div class="a" data-id="1">1</div>
<div class="a" data-id="2">2</div>
<div class="a" data-id="3">3</div>
答案 3 :(得分:0)
检查一下。
var highestVal = parseInt($('.a').first().attr('id'));
$('.a').first().siblings().each(function(index, item){
var crntVal = parseInt($(item).attr('id'));
if (crntVal > highestVal) { highestVal = crntVal; }
});
alert(highestVal);