2013-10-22 3 views
8

데이터 속성을 변경하려고했지만 변경되지 않고 기본값 인 "텍스트"로 남아 있습니다.데이터 속성 변경이 작동하지 않습니다.

function SuccessGetActorsForGroupCallback(data, el) { 
    var str = ""; 
    jQuery.each(data, function (i, val) { 
     str += val + '<br />'; 
    }); 

    $(el).data('original-title', str); 
    Utilities.ApplyTooltips($(el)); 
} 

도와주세요

+2

['.data'] (http://api.jquery.com/data) 메소드는'data-'HTML 속성을 변경하지 않습니다; jQuery가 내부적으로 저장하는 변수를 변경합니다. – Blazemonger

+0

이 질문에 답변하는 데 필요한 정보가 충분하지 않습니다. Utilities.ApplyTooltips는 무엇을합니까? 마크 업은 어떤 모습입니까? – Joe

+0

조금 더 많은 문맥이 도움이 될 것입니다. '데이터'는 어떻게 생겼고'ApplyTooltips'는 어떤 역할을합니까? –

답변

32

.data 방법은 data- HTML 속성을 변경하지 않습니다; jQuery가 내부적으로 저장하는 변수를 변경합니다.

당신이 정말로 data- 속성을 변경하려면 /해야 할 경우

.attr() 방법으로 이렇게 명시 적으로 수행

$(el).attr('data-original-title', str); 

그러나.data에 의해 반환되는 값을 변경하지 않습니다. jQuery는 data- HTML 속성 에서 그 값을 가져오고 내부적으로 저장된 값을 찾을 수없는 경우에만 가져옵니다. HTML 속성을 변경 한 후 $(el).data('original-title')을 다시 검색하면 변경되지 않았 음을 알 수 있습니다.

이 경우이 문제가되는 경우 .removeData() 메서드를 사용하여 내부 저장된 값을 삭제하십시오. 다음 번에 .data()을 사용하면 jQuery는 그 문자가 누락되었음을 확인하고 data- HTML 속성을 검색합니다. http://jsfiddle.net/mblase75/LHCUK/


HTML :

<p id="p" data-title="blah"></p> 

jQuery를 :

console.log($('#p').data('title')); // returns "blah" 

// alter the attribute directly 
$('#p').attr('data-title','whooo'); // data-title="whooo" 
// test if .data is changed 
console.log($('#p').data('title')); // still returns "blah" 

// delete the .data() value 
$('#p').removeData('title'); 
// now fetch it again -- it will retrieve the new data- attribute 
console.log($('#p').data('title')); // returns "whooo" 

이제 실제로, 당신은 걱정 할 필요가 없습니다

보세요 이. data- 속성은 초기 변수의 값을 나타내며 해당 변수의 값이 현재 일 필요는 없습니다. 그러면 괜찮을 것입니다. 요약

:.data() 방법은 HTML 요소에서 값을 검색하는 문서를로드하고, 변수가 내부에 저장되어있는 한 그렇게 다시하지 않을 것이다 .

+3

이렇게하면 컴퓨터가 스매싱되지 않아 ... – skirato

2

귀하의 코드 : $(el).data('original-title', str);
가 있어야한다 : 키를 사용하면 속성을 변경 $(el).attr('data-original-title', str);

.attr();을 사용 - 값 쌍.

Documentation here

+3

은 'data-original-title'이되어야 할 수도 있습니다. – Joe

+0

기본적으로 거기에 넣었습니다. 그가 지정한 것, 그 점은 충분히 명확했습니다. 그러나 나는 나의 대답 (팁을위한 감사합니다)을 편집했다! – SidOfc

관련 문제