2011-08-23 3 views
16

나는 클라이언트 측 이벤트의 데이터를 관리하기 위해 데이터 속성을 광범위하게 사용합니다. 자바 스크립트 또는 jquery를 사용하여 데이터 속성에 값을 동적으로 할당 할 수 있습니까?jquery를 사용하여 데이터 속성에 대해 동적으로 값 설정

"Uncaught ReferenceError: Invalid left-hand side in assignment".

사람이 달성 할 수있는 방법을 말해 주 시겠어요 : 자바 스크립트 코드 위

<li data-class_value="somevalue" class="myclass"></li> 


$('.myclass').click(function(){ 
    $(this).data('class_value') = "new value"; 
}); 

는 오류가 발생합니다?

답변

21

당신은 내가 답변 위에서 만 jQuery를 내 해당 요소에 데이터 오브젝트를 설정합니다 생각

$(this).data('class_value', "new value"); 
+0

덕분에 마법처럼 일했다 ... 데이터 속성의 –

2

$(this).data('class_value','new value') ;

.data

26

할 필요가있다. 당신이 사용할 수 있지만 같은 HTML5 데이터 -이 *뿐만 아니라 이런 식으로 속성 검색을 조심

$(this).attr("data-class_value", "new value"); 

: 당신이 실제 HTML의 데이터 - * 속성을 설정해야하는 경우

, 당신은이를 사용할 필요가 거라고 단축키 $(this).data("class_value");을 사용하여 검색하면 후속 검색에서 jQuery 데이터 객체의 캐시 된 값을 사용합니다. jQuery docs에서

:

The data- attributes are pulled in the first time the data property is accessed and then are no longer accessed or mutated (all data values are then stored internally in jQuery).

출처 : jQuery caching of data attributes

+3

캐싱 먹고 몇 시간, 감사합니다! – Heihachi

+0

어떻게 캐싱 문제를 해결할 수 있습니까? '$ (this) .removeAttr ("data-class_value", "new value");를 시도했지만 물론 작동하지 않습니다. 모든 단서? – kevllar

+0

@kevllar'removeAttr'는 하나의 인수 만 취합니다. 따라서 새로운 가치를 창출하지는 못할 것입니다. 대신에'attr'을 사용해야 할 것입니다. – jjeaton

관련 문제