2010-06-27 3 views
3

누구나 나에게이 문제에 대한 해결책을 제공하십시오. 문제는 입니다. jquery가있는 html 페이지에서 동적으로 thidid를 생성하고 있습니다. id가 예를 들어있는 경우 가장 큰 ID를 찾고 싶습니다. id0, id1, id2 .......... 누구나 내게 해결책을 제공하십시오. 읽어 주셔서 감사합니다.가장 큰 ID를 얻으십시오

+4

코드는 지금까지 무엇에서 찾을 수 있습니다 워킹? –

+5

생성 시간에 최대 ID를 변수에 저장하는 것이 가장 빠릅니다. –

+0

Joel이 말하듯이 ID를 생성하는 경우 가장 높은 것을 이미 알아야합니다. 찾을 필요가 없습니다. –

답변

-1

시도 :

alert($('element[id^="id"]:last').attr('id')); 

참고 : 지정하지 않았으므로, 나는 요소의 순서가 DOM에 상승되어 있다고 가정합니다. 당신이 하지들이 자연스럽게 DOM 순서에있어 수 있도록 페이지에 요소를 추가하는 경우

+0

이것은 요소가 숫자 순서에 따라 DOM에 배치된다고 가정합니다. 'id5'가'id1' 이전에 있다면? – James

+0

@ J-P : 맞아요.하지만 순서는 물론 DOM에서 수치라고 가정합니다. – Sarfraz

1

, 당신은 다음과 같이 찾을 수 있습니다 : 물론

function withMaxId() { 
    var max = -1, maxe = null; 
    $('[id^=id').each(function() { 
    var idv = parseInt(this.id.replace(/^id/, ''), 10); 
    if (idv > max) { 
     max = idv; 
     maxe = this; 
    } 
    }); 
    return maxe; // change to just "max" if you only want the id value 
} 

을 당신이에 대한 자세한 내용을 알고있는 경우 요소를 사용하면 $('*')을 더 선택적으로 바꿀 수 있습니다.

+1

내 머리 꼭대기에서'[id^= 'id']'로 대체 할 수 있습니다. –

+0

잘 모르겠습니다. 실제로 요소에 "id"값이 있는지 확인하기 위해이 값을 변경해야합니다 :-) – Pointy

+1

선택자의'[id]'는 더 똑똑한 브라우저 엔진에서도 속도를 향상시킵니다 :)'[id^= 'id']'는 현재 정규 표현식을 사용하고있는 것과 똑같은 일을하고 있습니다. 단지 .indexOf() == 0, http://github.com/jeresig/sizzle/blob/master/sizzle을 사용하고 있습니다. js # L685 –

5

는 다음 코드의 예 http://www.jsfiddle.net/LdgN9/2/

// create an array 
var ar = new Array(); 
// for each element with id that starts with 'id' 
$('[id^="id"]').each(
    function(){ 
       // add it to the array (only its numeric part) 
       ar.push(
         // extract the numeric part to be added in the array 
         parseInt($(this).attr('id').replace('id','')) 
        ); 
       }); 
// find the max value in the array 
alert('id' + Math.max.apply(Math, ar)); 
+0

환상적인, 내 문제를 완벽하게 해결! 감사 +1 –

관련 문제