2012-12-19 5 views
3

를 추출 :JQuery와 나는 이런 식으로 뭔가를 요소의 최신 ID를 얻을 수

<div id="row1">Some content</div> 
<div id="row2">Some content</div> 
<div id="row3">Some content</div> 
<div id="row4">Some content</div> 
<div id="row7">Some content</div> 
<div id="row15">Some content</div> 
<div id="row915">Some content</div> 
<div id="row919">Some content</div> 

행은 실제로 PHP 배열에서 가져온되어 지금은 예를 들어, 마지막 행의 수를 추출해야 이 경우에는 919가됩니다. (그래서 jQuery를 통해 더 많은 행을 생성하기 위해 append를 사용할 때 행 ID에 +1을 추가 할 수 있습니다.) 어떤 아이디어입니까?

+0

'에서는 parseInt (this.id.replace ('행', ''), 10) +1 ' – adeneo

답변

1

당신이 캔트 존 제안 것을 당신이 시도 할 수 있습니다 : http://jsfiddle.net/HTkkb/

스크립트는 위의 모든 사업부의 ID의 접미사의 최대 수를 발견하고 가져옵니다 여기

var max = -Infinity; 
$('div')​​.each(function() { 
    var match = this.id.match(/^row([0-9]+)$/) 
    if (max < match[1]) { 
     max = match[1];    
    } 
}); 

$('#row' + max).html('Max!'); 
​ 

는 예를 들어 바이올린입니다 ID row + max

+1

탁신, 예상대로 정확하게 작동합니다! – Peter

2

는 같은 사업부에있어 가정 및 row919은 마지막 요소 인 가정, 당신은 같은 것을 할 수 있습니다

var last_element_id = $('.parentDiv').last().attr('id'); 
var number = last_element_id.replace('row',''); 
5

이드 마지막으로 변수를 유지 오히려이 일을보다 제안 값. 추가 할 때이 값을 변경할 수 있습니다. 이것은 ID를 얻고 구문 분석하는 것을 절약합니다. 다른 답변으로

<div class="row" data-id="1">Some content</div> 
<div class="row" data-id="2">Some content</div> 

변수를 저장하고 다음 증가를 얻기 위해 더 좋을 거라 증가, 말했다 :

0

그것은 쉽게 data- 속성과 클래스를 사용합니다. 그러나 당신은 여전히 ​​데이터 id 구조를 고려해야하고 그것을 가진 레이블을 가진 id 애트리뷰트로부터 파싱하려하지 않아야한다.

+1

이이 문제를 접근하는 매우 비효율적 인 방법입니다. 왜 그냥'last()'를 모으기보다는 모든 요소를 ​​반복 할 것인가? –

+1

@JonTaylor 나는 데이터를 저장하는 것이 ID 속성을 문자열로 사용하는 것보다 낫다는 점에서 마지막으로 저장하는 것이 더 좋을 것이라고 생각하지만이 대답은 여전히 ​​도움이됩니다. 또한'last()'는 내가 현명하다고 생각하지 않는 올바른 순서에 의존한다. – MrCode

+0

데이터 속성이 매우 유용 할 수 있다는 데 동의합니다. 그는 또한 아래쪽에 가장 큰 가치를 지닌 항목의 정렬 된 목록을 구체적으로 보여줍니다. 이것은 내가 가장 큰 가치가 항상 지속될 것이라고 (아마도 부정확하게) 가정하게한다. –

0

사용을 가진 요소 : 마지막

alert($('div:last').attr('id').split('row')[1]); 
,

바이올린 예를 jsfiddle

관련 문제