2011-01-06 21 views
12

en yüksek id değeri bulmak:Döngü ve ben gibi unsurların bir grup var

<div id="car-123" class="blah">..</div> 

Hepsinin içinde döngü istiyorum ve 123

yani en yüksek Kimliğini almak

bunu nasıl yaparsınız?

Doğru ve en iyi yol aşağıda mı?

$(".blah").each(function() { 

    var id = $(this).attr('id').split('-')[0]; 

    if(id > newid) 
     newid = id; 

}); 
+0

Sayfada sunucunuz tarafından sırayla mı yazılır? Sadece sonuncuyu kapmak o davada işe yarayacaktı. –

+1

Sanırım $ (this) ... [1] değil [0] ' –

+0

Gabi'nin yorumuna ek olarak, $ (this) ...;' parseInt ($ ($) bu) ..., 10); 'dize karşılaştırması yerine sayı karşılaştırması yapmak (çünkü" 12 ">" 100 "). Aksi takdirde, bu oldukça basit görünüyor. –

cevap

1

Sen seni ikinci değerini parçalı kimliğini gerek parseInt yüzden sayısal operatörler

var id = parseInt($(this).attr('id').split('-')[1]); 
+0

Neredeyse sahip olduğum gibi aynı, ama 'parseInt'de radix parametresini unutmayın: parseInt (str, 10);' – Harmen

+0

Ah, cevabınızı yakalamadım. –

0

uygulamak kullanmak istiyor ve bu gibi bir tamsayı dize dönüştürmek isteyebilirsiniz:

var newid = 0; 

$(".blah").each(function() { 

    var id = parseInt(this.id.split('-')[1], 10); 

    if(id > newid) 
    newid = id; 

}); 
10

Ben .map, .get ve .sort kullanarak, bunun için gitmek istiyorum:

$('.blah').map(function(){ 
    return parseInt(this.id.split('-')[1], 10); 
}).get().sort(function(a, b) { 
    return b - a; 
})[0]; 
+0

+1 Güzel bitti! – karim79

+0

Bu ilginç ... benim sevdiğim bir şey, kapsam için yerel bir değişken getirmemesi. –

+1

Beğenmediğim tek şey 'parseInt',' get', 'map',' sort' '' '' '' '' '' '' parseInt'' için – RobertPitt

17

yapardım:

var max = 0; 
$(".blah").each(function(){ 
    num = parseInt(this.id.split("-")[1],10); 
    if(num > max) 
    { 
     max = num; 
    } 
}); 

Çoğu insan bu şekilde yapardı.

+1

evet, okunması daha kolay. – EdH

+1

yerine [1] 'yapabilirdiniz, num = parseInt (this.id.split ('-'). Pop(), 10);'. "Var max;" ifadesini "var max = 0" ile aynı zamanda bildirmek iyi bir fikir olabilir. – martincarlin87

İlgili konular