2012-10-25 2 views
0

이상한 질문 일 수 있습니다. 나는 두 개의 배열을 통합하려고 시도하지만, 읽음으로써 그것들을 개별 유형의 객체로 보여주고있다.개체 차이점 (자바 스크립트 및 jquery)

[object Object] 

I 좀더 JS 방식을 사용하여 각 옵션을 누름으로부터 얻고있는 두 번째 방법이 같이 나타낸다 : 그들을 경고 할 때 .serializeArray() JQuery와 기능에 의해 수집 된 제 타입이 같이 보이고 :

[object HTMLOptionElement] 

여기 내 코드는 다음과 같습니다

incrCopy(); 
    enableSubmit(); 
    disableReset(); 

    var linkedInArray = []; 
    $('form select option.linked-in').each(function() { 
    linkedInArray.push(this); 
    }) 
    //These alert the second way 

    prevVals = $("form").serializeArray(); 
    //They alert the first way 
    prevVals.push(linkedInArray); 
    alert(prevVals); 

누구든지 내가 여기에 누락 무엇인지에 대한 아이디어가?

+0

좋아, 나는 학문적으로 차이가 있는지 모르겠지만 각 루프에서 'this'대신 $ (this)를 호출하면 객체가 동일하게 보입니다. – streetlight

+1

나는 그것을 대답으로 넣으려고했다. HTML 요소는'$()'에 래핑 될 때까지 jQuery 객체가되지 않습니다. –

+3

글쎄,'serializeArray'는 양식 필드에서 값을 수집하고 객체 배열을 만듭니다 (http://api.jquery.com/serializeArray/). 'linkedInArray.push (this);'는 DOM 요소를 배열에 직접 추가합니다. 당신은 단지 두 가지 일을하고 있습니다. –

답변

2

이것은 jQuery와 JavaScript의 차이가 아닙니다. 그것이 serializeArray의 작동 방식입니다. HTML 요소 목록을 반환하지 않으며 이름/값 속성을 가진 평범한 개체의 목록을 반환합니다. ,

[ 
    { 
    name: "user[eye_color]", 
    value: "brown" 
    }, 
    { 
    name: "user[age]", 
    value: 47 
    } 
] 

Conversly 첫 번째 : 이런 식으로 뭔가를 찾고, 그것은 일반 오래된 객체의 배열을 반환

<input name="user[eye_color]" value="brown" /> 
<input name="user[age]" value="47" /> 

:

예를 들어, 같은 것을 찾아 그것을했다 루프는 각 요소가 어떤 종류의 native HTMLElement (HTMLDivElement, HTMLInputElement, HTMLTableElement 등) 인 jQuery 선택자를 반복합니다.