2013-08-23 4 views
0

많은 HTML 옵션 목록이 있습니다. 옵션 중 일부는 내가 식별하는 데 사용하는 '상위'속성을 가지고 있습니다. 기본적으로 누군가가 부모 드롭 다운을 선택하면 모든 자식이 다른 드롭 다운을 채 웁니다. 그래서이 모든 객체를 배열에 배치하고 페이지에서 제거한 다음 필요할 때 호출합니다.jQuery에서 페이지 요소로 배열 만들기

이것은 우리가 작업하고있는 사이트에서 가져온 모든 HTML 코드이므로 어떻게 든 작동합니다 (확실하지는 않습니다). 내 생각은 객체를 만들고 해당 객체에 항목을 밀어 넣는 것뿐입니다 ('id'및 'parent'키 사용). 그것은 비록 내가하고있는 방식대로 작동하지 않는 것 같아요 :

var location_array = new Object(); 

$('select[name="location"] option').each(function(){ 
    if($(this).attr('parent')){ 
     var obj = { 
      id: $(this).attr('id') 
      parent: $(this).attr('parent') 
     } 
     location_array.push(obj);   
    } 
}); 

어떤 도움을 주시면 감사하겠습니다. 나는 이것이 아마도 매우 기본적인 것임을 알고 있지만이 유형의 코딩을 자주하지는 않습니다. 당신의 도움을 주셔서 감사합니다!

+0

HTML에서'parent'는 속성입니까? –

+0

@MuhammadTalhaAkbar, 나는 그것을 본 적이 없지만 속성을 부여 할 수있었습니다. 내가 말했듯이, 나는 작동 코드를 가진 다른 페이지의 코드를 복사했고 console.log를 사용하여 모든 옵션에서 '부모'값을 출력 할 수있었습니다. – MillerMedia

답변

3

변경

var location_array = new Object(); 

var location_array = []; 

에 개체있는 방법에게 당신은 push을 사용하고 .push()

0

이 없지만 location_array, 그것은 객체 배열입니다하지 않습니다.

아마 (내가 이름을 변경 한) 그것을 객체를 유지하는 것입니다 :

var parents = {}; // A better way to write `new Object()` 

$('select[name="location"] option').each(function(){ 
    var parent = $(this).attr('parent'); 
    parents[this.id] = parent; 
}); 

지금 당신이 그들의 부모에게지도, 매핑 요소 ID를 가지고있다. ( $(this).attr("id")this.id를 작성 단지 정말 로터리 방법이라고합니다.)


사이드 참고 : 사용자 정의를 사용하여 속성을 때, HTML 정의 속성 (현재와 미래)과의 충돌을 피하기 위해 the data-* prefix 스틱.