2014-10-14 3 views
2

요소 데이터 개체의 모든 내용을 더 빠르게 대체 할 수 있습니까?HTML 요소의 데이터 개체를 완전히 바꾸는 방법

//get old data keys to delete 
var old_data = $(".f")[0].dataset; 

for (var key in old_data){ 
    delete old_data[key]; 
} 
//new data to attach to `.f` element 
var new_data = $(".s")[0].dataset; 

for (var key in new_data){ 
    $(".f").data(key, new_data[key]); 
} 

console.log($(".f").data()); 

나는

//errors 
    $(".f").data() = {}; 
    $(".f").data(new_data); 

    //doesn't delete old keys/values 
    var new_data = $(".s").data(); 
    $(".f").data(new_data); 

이 작업을 수행하는 빠른 방법이 있나요처럼 더 간결한 변화를 시도했습니다?

+2

, 데이터 STH = "123"'하지만 주셔서 감사합니다'인라인 없습니다. – 1252748

+0

'delete $ (". f") [0] .dataset'처럼 데이터 세트 자체를 삭제하려고 했습니까? –

답변

1

를 참조하십시오.

.removeData([list]); 
.removeAttr([name]); 

[목록] - 배열하거나 삭제 된 데이터의 피스 명명 공간 분리 된 문자열. 인수없이 호출하면 .removeData()가 값을 모두 제거합니다.

UPDATE

.removeAttr([name]) '힘'한 번에 한 조각을 제거하는 당신이뿐만 아니라 사용할 수 있기 때문에 :

.removeData([name]); 

[name] 양식 data-<name>의 것을 명심하시기 바랍니다 및 각각 <name>. 인스턴스가 data-myid 사용을 제거하려면 :

칼 - AndréGagnon 불행하게도 만 jQuery를 명시 적으로 설정 데이터 속성을 제거하는 것 같다 @
.removeAttr('data-myid'); //and 
.removeData('myid'); 
+0

더 빠를 것 같지 않습니다. –

+0

'.removeAttr ([name]);'이 (가) 작동했습니다. '.removeData ([list]); '는 쓸모가 없습니다. 도와 주셔서 감사합니다! – 1252748

+0

'.removeAttr ([name])'은 한 번에 하나씩 제거해야하기 때문에'.removeData ([name])'를 사용할 수도 있습니다. '[name]'은'data-'과''형태로되어 있다는 것을 명심하십시오. 예를 들어'data-myid '를 제거하려면'.removeAttr ('data-myid ')'와'.removeData ('myid ')'를 사용하십시오. – PeterKA

0

jQuery builinfunction jQuery.removeData(element [, name ])이 있습니다.

참조에게 당신은 jQuery .removeDatajQuery .removeAttr() API를 모두 사용할 필요가 here

+0

는 데이터 -를 제거하지 않습니다 * –

+0

불행하게도 만 jQuery를하지 인라인 데이터 STH = "123"하지만 감사로 명시 적으로 설정 속성 데이터를 제거하는 것 같다 속성. – 1252748

관련 문제