HTML Academy · पाठ

कस्टम डेटा एट्रिब्यूट: data-*

data-* एट्रिब्यूट के साथ कस्टम डेटा सीधे एलिमेंट में संग्रहीत करें।

पाठ 4, कुल 4 में से13 चरण

कस्टम डेटा एट्रिब्यूट: data-*, CoddyKit पर HTML Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह HTML Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। HTML Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

data-* विशेषताएँ क्या हैं

कस्टम data विशेषताएँ आपको अतिरिक्त जानकारी सीधे HTML एलिमेंट में संग्रहीत करने देती हैं:

<button data-user-id="42" data-action="delete">Delete User</button>
<li data-category="frontend" data-level="beginner">HTML</li>

<!-- Format: data-[name]="value" -->
<!-- Any alphanumeric name after data- is valid -->
<!-- Values are always strings -->

data-* क्यों मौजूद है

data-* से पहले डेवलपर अतिरिक्त डेटा इन जगहों पर संग्रहीत करते थे:

  • छिपे हुए इनपुट (अव्यवस्थित)
  • CSS क्लास नाम (नाज़ुक)
  • rel या title जैसी गैर-मानक विशेषताएँ (अमान्य HTML)

HTML5 ने अर्थ या प्रस्तुतीकरण को प्रभावित किए बिना कस्टम डेटा एम्बेड करने के आधिकारिक तरीके के रूप में data-* को मानकीकृत किया।

नामकरण के नियम

data-* विशेषताओं के नामकरण के नियम:

  • data- से शुरू होना चाहिए
  • नाम में छोटे अक्षर, अंक, हाइफ़न, अंडरस्कोर और पीरियड हो सकते हैं
  • नाम में बड़े अक्षर नहीं हो सकते (HTML स्पेसिफ़िकेशन उन्हें छोटे अक्षरों में बदल देता है)
  • नाम xml से शुरू नहीं हो सकता
<div data-user-id="1">OK</div>
<div data-product-category="tools">OK</div>
<!-- <div data-XML-thing="1">BAD: starts with xml -->
<!-- <div data-MyProp="1">BAD: uppercase in name -->

JavaScript में data-* पढ़ना

dataset प्रॉपर्टी के माध्यम से कस्टम डेटा तक पहुँचें:

<button id="btn"
  data-user-id="42"
  data-action="delete"
  data-confirm-message="Are you sure?"
>
  Delete
</button>

<script>
const btn = document.getElementById('btn');
console.log(btn.dataset.userId);          // '42'
console.log(btn.dataset.action);          // 'delete'
console.log(btn.dataset.confirmMessage);  // 'Are you sure?'
// Note: data-user-id → dataset.userId (camelCase conversion)
</script>

dataset से data-* लिखना

dataset के माध्यम से data विशेषताएँ सेट और हटाएँ:

const card = document.querySelector('.card');

// Set:
card.dataset.status = 'active';
// Now: <div class="card" data-status="active">

// Delete:
delete card.dataset.status;
// Now: data-status is removed

// Alternatively with setAttribute:
card.setAttribute('data-status', 'inactive');
card.removeAttribute('data-status');

हाइफ़न से camelCase में रूपांतरण

dataset API हाइफ़न से अलग किए गए नामों को camelCase में बदलती है:

<!-- HTML attribute         JavaScript dataset property -->
data-user-id           →   dataset.userId
data-product-category  →   dataset.productCategory
data-max-retries       →   dataset.maxRetries
data-is-active         →   dataset.isActive

CSS विशेषता चयनकर्ता

CSS चयनकर्ताओं में data विशेषताओं का उपयोग करें:

[data-status="active"] {
  color: green;
}

[data-status="inactive"] {
  color: gray;
  text-decoration: line-through;
}

/* Present but any value: */
[data-featured] {
  border: 2px solid gold;
}

टूलटिप पैटर्न

data विशेषताओं के साथ शुद्ध-CSS टूलटिप बनाएँ:

<span data-tooltip="This is a tooltip">Hover me</span>

/* CSS: */
/*
[data-tooltip] {
  position: relative;
}
[data-tooltip]::after {
  content: attr(data-tooltip);  /* attr() reads the attribute value */
  position: absolute;
  background: #333;
  color: white;
  padding: 0.25rem 0.5rem;
  border-radius: 4px;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s;
}
[data-tooltip]:hover::after { opacity: 1; }
*/

state ट्रैकिंग पैटर्न

data विशेषताओं के साथ कॉम्पोनेंट की state ट्रैक करें:

<button data-state="off" id="toggle">Toggle</button>

<script>
document.getElementById('toggle').addEventListener('click', function() {
  const state = this.dataset.state;
  this.dataset.state = state === 'off' ? 'on' : 'off';
  this.textContent = this.dataset.state === 'on' ? 'Active' : 'Toggle';
});
</script>

/* CSS: */
/* [data-state="on"] { background: green; color: white; } */

data-* बनाम JavaScript चर

data-* का उपयोग कब करें और डेटा को JavaScript में कब संग्रहीत करें:

  • उन मानों के लिए data-* का उपयोग करें जो सीधे किसी DOM एलिमेंट से संबंधित हों और जिन्हें CSS पढ़ सकती हो
  • जटिल डेटा संरचनाओं के लिए JavaScript चर/ऑब्जेक्ट का उपयोग करें, जो किसी विशेष एलिमेंट से संबंधित न हों
  • data-* में बड़ा या संवेदनशील डेटा संग्रहीत न करें—यह DevTools में दिखाई देता है

data-* प्रस्तुतीकरण के लिए नहीं है

इन सामान्य गलतियों से बचें:

<!-- BAD: storing presentation data in data-* -->
<div data-color="red" data-font-size="18">Text</div>
<!-- Use CSS classes instead: -->
<div class="text-danger text-lg">Text</div>

<!-- BAD: storing sensitive data -->
<div data-api-key="sk-123...">Content</div>
<!-- NEVER store secrets in HTML attributes -->

त्वरित जाँच

dataset API data-product-id विशेषता तक कैसे पहुँचती है?

पुनरावलोकन: data-* विशेषताएँ

कस्टम data विशेषताओं की आवश्यक बातें:

  • data-name="value" — एलिमेंट पर कस्टम मेटाडेटा संग्रहीत करें
  • element.dataset.camelCase के माध्यम से पहुँचें
  • dataset API में हाइफ़न camelCase में बदल जाते हैं
  • [data-name="value"] चयनकर्ताओं के साथ CSS में उपयोग करें
  • संवेदनशील डेटा (कुंजियाँ, पासवर्ड) कभी भी data विशेषताओं में संग्रहीत न करें
शुरुआत निःशुल्क

एआई शिक्षक के साथ HTML सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
40
पाठ
159

अक्सर पूछे जाने वाले प्रश्न

क्या “कस्टम डेटा एट्रिब्यूट: data-*” पाठ निःशुल्क है?

हाँ — HTML Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “कस्टम डेटा एट्रिब्यूट: data-*” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। HTML Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“कस्टम डेटा एट्रिब्यूट: data-*” में मैं क्या सीखूँगा?

data-* एट्रिब्यूट के साथ कस्टम डेटा सीधे एलिमेंट में संग्रहीत करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ HTML Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या HTML Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर HTML Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“कस्टम डेटा एट्रिब्यूट: data-*” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस HTML Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर HTML Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. id, class, style और title
  2. hidden एट्रिब्यूट
  3. tabindex और accesskey
  4. कस्टम डेटा एट्रिब्यूट: data-*
← HTML Academy पर वापस जाएँ