2010-12-03 4 views
5

내가 DIV 컨테이너에 키 - 값 쌍을 저장하고있어의 크기를 얻을 방법 : 난 아무것도이 DIV 컨테이너에 저장되어 있는지 확인해야 끝에사용하여 jQuery를 객체

$('#div_id').data(key, value); 

.

그래서 먼저 내가 호출하여 콘텐츠를 :

var data = $('#div_id').data(); 

그런 다음 data.length입니다 또는 data.size와 크기를 확인합니다.

하지만 두 기능이 모두 존재하지 않습니다. jquery의 데이터 함수가 객체를 반환하므로이 객체의 크기를 가져올 수 있어야합니다.

jquery에서 데이터 함수가 반환 한 객체의 크기는 어떻게 얻습니까?

+0

듀얼? http://stackoverflow.com/questions/2402193 – kafuchau

+0

특정 키가 data()에 있는지 확인하려는 경우 if ('key_name'in $ ('# div_id'). data()) – fredrik

답변

10

개체에는 "크기"가 없습니다. 당신은하지만, 해당 속성을 셀 수 :

function getPropertyCount(obj) { 
    var count = 0, 
     key; 

    for (key in obj) { 
     if (obj.hasOwnProperty(key)) { 
      count++; 
     } 
    } 

    return count; 
} 

사용법 :

alert(getPropertyCount(data)); 
+0

'for (obj의 var 키) {'? –

+1

obj.hasOwnProperty (key)에 +1. – fredrik

+0

왜 downvote? – jwueller

0

자바 스크립트 객체는 길이 속성이 없습니다. 하지만 간단한 jQuery 함수로 쉽게 계산할 수 있습니다.

$.fn.dataLength = function() { 
    var i, 
     n = 0, 
     t = $(this); 
    for (i in t.data()) { 
     n += 1; 
    } 

    return n; 
} 

그리고 $ ('#의 div_id')와 함께 사용 데이터 길이()

편집 :.

마음 .DATA의 데이터 구조와 검사에 대한 다른 답변을 .hasOwnProperty

2

이 키/값 쌍을 개체/노드에이 수준으로 저장하는 것은 좋지 않습니다. 어떤 거기의

var data = $('#div_id').data(); 

수익률이 node에 연결된 모든 데이터, 이것은 예를 들어 event handlers 포함됩니다. 실제 질문에

$('#div_id').data('mydata', {}); 
/* ... */ 
$('#div_id').data('mydata')[key] = value; 

:

그래서 가장 좋은 방법은 모든 데이터를 포함하는 개체를 만드는 것입니다. 일반 자바 스크립트 개체는 .length 속성을 소유하고 있지 않습니다. 당신은 키를 통해 반복, 자신을 위해 그것을 확인해야합니다 :
var mylen = 0; 
for(var prop in $('#div_id').data('mydata')) { 
    mylen++; 
} 

도 확인하고 현재 속성은 프로토 타입 체인에 어딘가에서 inheritated 있지 않은지 확인하게 .hasOwnProperty() 메서드를 호출하여 개선되어야한다.

1

"키"에 대해 알고 있습니까? 그렇다면 키를 확인하십시오 (그렇지 않은 경우). store an Object or Array instead.

그런 다음 다시 꺼내기 만하면 해당 키를 가져옵니다.당신이 뭔가를 포함하고 있는지 확인해야하는 경우

var data = $('#div_id').data('myData'); 

,이 같은 일반적인 기능을 자바 스크립트 객체가/"지도"A "길이"또는 "크기"메소드/속성을 가지고 있지 않음을 명심, 너무 작동해야합니다.

function isObjEmpty(obj){ 
    for(var i in obj){ 
    return false; 
    } 
    return true; 
} 
관련 문제