2012-07-10 3 views
0

jQuery 데이터 함수를 사용하여 저장된 객체의 속성을 반복하는 동안 아주 이상한 것이 있습니다.jQuery - 데이터 저장 객체를 반복합니다.

wrapper.data('infos', { 
    label: $('input[name*="label"]').val(), 
    amount: $('input[name*="amount"]').val(), 
    etc.. 
}); 

그럼 내가 사용하여 값을 읽으려고 :

$.each(wrapper.data('infos'), function(k,v) { 
    console.log(k + ' > ' + v); 
}); 

그리고 내가 좋아하는 아름다운 출력을 얻을 :

0 > undefined 
1 > undefined 
... 
239 > undefined 
다음

은 (예를 들어 같은) 일

만약 내가이 개체를 출력, 난 어려움없이 속성을 읽을 수 있습니다. jquery 캐싱과 관련이 있습니까? 개체가 length 속성을 가지고 있기 때문에

+0

당신은 페이스트 빈 또는 jsfiddle에 CONSOLE.LOG (wrapper.data ('정보를 정기적으로'))의 출력을 넣을 수 있습니다? – Hardik

+1

jQuery의 어떤 버전을 사용하고 있습니까? 이것은 (http://jsfiddle.net/27dCJ/) 나를 위해 (jQuery 1.7.2) 예상대로 작동합니다. 나는 또한 문제를 보여주는 jsFiddle을 포함시키는 것을 고려할 것이다 * live *. – Matt

+0

[예제] (http://jsfiddle.net/2kW29/)를 확인하십시오. –

답변

0

,이 같은 배열로 interpeted되고 1.7.2 적어도, 그것은 배열의 여부를 통해 결정됩니다

length = obj.length,    
isObj = length === undefined || jQuery.isFunction(obj); 

그래서 당신은해야 하나;

  1. 다른 사용자의 length 재산 뭔가
  2. 사용하는 대신 for/in 루프를 호출합니다.

    var data = wrapper.data('infos') 
    
    for (var x in data) { 
        if (data.hasOwnProperty(x)) { // omit properties from the prototype chain 
         console.log(x + ' > ' + data[x]); 
        } 
    } 
    
+0

for/in 루프를 사용하고 싶습니다. 제 경우에는 완벽하게 작동합니다. 정말 고마워, 너 정말 나를 도와 줬어! – anael

관련 문제