2013-10-22 7 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) विधि 'डेटा-' HTML विशेषता को परिवर्तित नहीं करती है; यह एक चर बदलता है कि jQuery आंतरिक रूप से स्टोर करता है। – Blazemonger

+0

इस प्रश्न का उत्तर देने के लिए पर्याप्त जानकारी नहीं है। Utilities.ApplyTooltips क्या करता है? मार्कअप कैसा दिखता है? – Joe

+0

थोड़ा और संदर्भ उपयोगी होगा। 'डेटा' कैसा दिखता है और 'लागू ट्यूटटिप्स' क्या करता है? –

उत्तर

32

.data विधि data- एचटीएमएल विशेषता में परिवर्तन नहीं करता; यह एक चर बदलता है कि jQuery आंतरिक रूप से स्टोर करता है।

तुम सच में की जरूरत है/data- विशेषता को बदलने के लिए चाहते हैं, .attr() विधि के साथ इतना स्पष्ट रूप से कार्य करें:

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

हालांकि, इस .data द्वारा दिए गए मान को बदल नहीं होगा। jQuery data- एचटीएमएल विशेषता से केवल उस मान को लाएगा यदि यह आंतरिक रूप से संग्रहीत मूल्य नहीं ढूंढ सकता है। यदि आप HTML विशेषता को बदलने के बाद फिर से $(el).data('original-title') पुनर्प्राप्त करते हैं, तो आप पाएंगे कि यह नहीं बदला है।

यदि यह एक समस्या है, तो आंतरिक रूप से संग्रहीत मूल्य को हटाने के लिए .removeData() विधि का उपयोग करें। अगली बार जब आप .data() का उपयोग करेंगे, तो jQuery देखेंगे कि यह गुम है और data- HTML विशेषता पुनर्प्राप्त करें। http://jsfiddle.net/mblase75/LHCUK/


एचटीएमएल:

<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() वैरिएबल का मान दर्शाती है और आवश्यक रूप से वर्तमान उस चर के मान को नहीं, और आप ठीक होंगे।

सारांश में:.data() विधि HTML तत्व से एक मान प्राप्त करता एक बार जब दस्तावेज़ भरी हुई है, और जब तक ऐसा फिर से काम नहीं चलेगा के रूप में चर आंतरिक रूप से संग्रहीत किया जाता है।

+3

यह मुझे मेरे कंप्यूटर को तोड़ने से बचाया ... – skirato

2

आपका कोड: $(el).data('original-title', str);
होना चाहिए: $(el).attr('data-original-title', str);

.attr(); विशेषताओं को बदलने के लिए करता है, तो कुंजी में इस्तेमाल किया जाता है - मान युग्म।

Documentation here

+3

जो 'डेटा-मूल-शीर्षक' होने की आवश्यकता हो सकती है – Joe

+0

मैं मूल रूप से वहां डालता हूं, जो उसने निर्दिष्ट किया है, मुझे लगता है कि बिंदु पर्याप्त स्पष्ट था। हालांकि मैंने अपना जवाब संपादित किया, टिप के लिए धन्यवाद! – SidOfc

संबंधित मुद्दे