2011-08-16 3 views
2

jQuery의 .data() 함수는 true 읽기 - 쓰기 저장보다 한 번 쓰기가 가능한 저장소라고 할 수 있습니다.jQuery의 .data()에 저장된 "복잡한"데이터를 업데이트하는 방법은 무엇입니까?

복잡한 값을 업데이트하는 편리한 방법이없는 것 같습니다.

이중 연결 목록에서 일부 요소를 사용하려고한다고 가정합니다 (사용 사례가 아닌 설명 목적 만).

내가 할 것이 있다면 그것은 쉬운 것입니다 :

$elem.data('prev', $prev); 
$elem.data('next', $next); 

그러나 나는 요소의 "글로벌".data() 네임 스페이스를 오염시키는 나쁜 방법입니다 생각합니다.

$elem.data('list', {prev: $prev, next: $next}); 

을하지만 어떻게 지금 prev 업데이트합니까 :

그래서 차라리 할 것? 첫 번째 예에서

, 나는 다만 것 :

$elem.data('list', {prev: $newPrev, next: $elem.data('list').next}); 
:
$elem.data('prev', $newPrev); 

그러나 일을하는 내 의견으로는 "더 좋은"방법 내가 생각할 수있는 유일한 것은이 같은 것입니다

이것은 훨씬 더 성가신 것처럼 보이고 더 좋은 방법이 있다고 의심하지만 지금까지는 아무것도 찾을 수 없습니다.

어떻게해야합니까?

+0

데이터 ('다음', ..) 데이터 ('이전', ..)를 사용할 때의 문제점은 무엇입니까? 그것은 요소가 아닌 글로벌입니다 –

답변

4

당신이 하나 개의 인수와 jQuery의 데이터 메서드를 호출 할 때, 당신은 당신이 정기적으로 . 표기법을 사용하여 직접 업데이트 할 수 있습니다 저장된 객체에 대한 참조를 얻을 : 이것처럼

+0

세 번째 줄은 불필요합니다 – balpha

+0

@ 감사합니다! 내 대답이 업데이트되었습니다. –

1

@balpha

$elem.data('list').prev = $newPrev; 

감사합니다 :

// method one 
var elemData = $elem.data("list"); 
elemData.prev = "foo"; 

// method two 
$elem.data("list").next = "bar"; 

당신이 불을 지르고있는 경우가 herehere (출력은 로그인 한 데모를 확인하실 수 있습니다 콘솔).

관련 문제