그래서 어딘가에서 데이터를 가져와 정리해야하기 때문에이 작업을 수행해야한다고 가정합니다. 가능한 경우 문제의 원인을 수정하십시오.
그러나 일치하지 않는 경우 트리에서 일치하는 ID를 찾는 요소를 반복 할 수 있습니다. 이 같은 (트리의 모든 하위 요소 일치) 잠재적으로 큰 중간 배열을 생성한다
var theTargetID = /* ...whatever ID you're looking for... */;
$(theTree).find("*").each(function(element) {
if (this.id == theTargetID) {
// it matches the ID
}
});
. 이것은 잘못된 문서 구조 (다중 ID)를 사용하여 무언가를하려고하기 때문에 jQuery의 멋진 래퍼보다는 지루하고 오래된 DOM 트래버 설을 사용하는 것이 가장 좋은 곳일 수 있습니다. 여기
는 대상 ID를 찾고 원시 DOM 탐색이 어떻게 보이는지의 다음
element
인수가 DOM 요소 (안 jQuery를 객체 또는 텍스트 노드 등이 실제로 있다고 가정
function traverse(theTargetID, element) {
var node;
if (element.id == theTargetID) {
// It matches, do something about it
}
// Process child nodes
for (node = element.firstChild; node; node = node.nextSibling) {
if (node.nodeType === 1) { // 1 == Element
traverse(theTargetID, node);
}
}
}
). 요소의 id
을 확인한 다음 필요할 경우 재귀 적으로 자식을 처리합니다. 이렇게하면 잠재적으로 큰 배열을 만들지 않아도됩니다.
트리 노드를 참조 했으므로 리프 노드가 아닙니다. 나무가로드 될 때 한 번만이 작업을 수행하려면 트리 내의 노드가 —으로 선택 될 때뿐만 아니라 잘못된 구조를 가능한 한 짧게 유지하고 사전에 문제를 해결하기를 원하기 때문입니다.
동일한 ID는 좋은 습관이 아닙니다 .... – Reigel
': selected' 속성을 의미합니까? 이 경우 ''에서만 작동합니다. [http://api.jquery.com/selected-selector/](http://api.jquery.com/selected-selector/)를 참조하십시오. –