나는 id의 DOM 계층 구조를 자바 스크립트 배열로 가져 오려고합니다. (나는 DIVs 및 toArray 재정렬 할 정렬 가능한 jQuery UI를 사용하고 평면 (비 계층 적) 결과 현재 직렬화합니다.DOM 요소 자식의 Jquery 다차원 배열
코드는 다른 SOF jfiddle 솔루션을 기반으로하며, 여기 내 샌드 박스입니다 :
어떻게 하나는 DOM 어린이를 반복하고 다차원 배열에 자신의 아이디의 기록 가겠어요http://jsfiddle.net/rfwkQ/2/
업데이트는?
편집 :
function getChildren(elem) {
var parent = [];
if ($(elem).children().length !== 0) {
$(elem).children().each(function() {
if ($(this).find('> div').children().size() !== 0) {
var child = getChildren(this);
parent.push(child);
} else {
parent.push(this.id);
}
});
return parent;
}
}
나는 div를하고 자녀를 반복하려고 위의 기능을 조립했습니다. div가 다차원 배열로 반환합니다.
기타 질문 상위 수준 중첩 div에 빈 문자열 요소를 만듭니다. 비어 있지 않은지 여부를 확인하는 대신 내 로직에서이를 어떻게 해결할 수 있습니까? (어쨌든 좋은 아이디어가 될 것입니다.)
샌드 박스 2.0 : 링크는 아래의 업데이트
마지막으로 해결 (감사로는 Freenode의 IRC에 #jquery에 'shoky') 당신은 두 가지를 사용하여 DOM을 걸을 수
function getChildren(elem) {
var parent = [];
$(elem).children('div').each(function() {
parent.push(
$(this).children('div').length ? getChildren(this) : this.id);
});
return parent;
}
전체 구조의 복사본을 만들지 않고도 DOM을 반복하거나 DOM을 쿼리 할 수 있으므로 일반적으로 DOM 사본을 직접 만들 필요가 없습니다. 당신은 정말로 무엇을 성취하려고합니까? – jfriend00
내가 분명히 했어야했다, 나는 단지 ID가 내가 sortable, jsfiddle jquery UI를 sortable 예를 들어 생성했습니다. (궁극적 인 목표는 DB에 $ .ajax 호출을 수행하는 것입니다.) 또한 Div가 제거되거나 정렬에 추가 될 수 있다고 말합니다. null이 아닌지 확인하고 자식에 대한 id 배열을 인덱싱하는 가장 좋은 방법은 무엇입니까? – user1467969
제 대답에 평범한 자바 스크립트 구현을 추가했습니다.이 구현은 jQuery 버전보다 훨씬 빠릅니다 (문제가있는 경우). – jfriend00