मूल्य के बिना विशेषता सेट करें


194

मैं jQuery में एक मूल्य जोड़ने के बिना एक डेटा विशेषता कैसे निर्धारित करूं? मैं यह चाहता हूँ:

<body data-body>

मैंने कोशिश की:

$('body').attr('data-body'); // this is a getter, not working
$('body').attr('data-body', null); // not adding anything

सब कुछ दूसरे तर्कों को एक स्ट्रिंग के रूप में जोड़ता है। क्या बिना मूल्य के सिर्फ एक विशेषता निर्धारित करना संभव है?


3
आपको data-bodyबनाम की आवश्यकता क्यों है data-body=""?
धमाका गोलियां

कम से कम यदि आप एक्सएचटीएमएल का उपयोग करना चाहते हैं, तो आपको ऐसा नहीं करना चाहिए क्योंकि विशेषता न्यूनतमकरण की अनुमति नहीं है।
मथायस

9
मैं XHTML का उपयोग नहीं करता, मैं
David Hellsing

2
@ user1689607 क्योंकि मैं उत्पन्न HTML को एक स्ट्रिंग के रूप में सहेज रहा हूं और बाद में रिवर्स लुकअप करने की आवश्यकता है।
डेविड हेलसिंग

4
@ExplosionPills एक उदाहरण requiredHTML5 फॉर्म सत्यापन के लिए विशेषता है। मुझे यकीन है कि कई अन्य वैध उपयोग के मामले हैं।
ज़ीरो

जवाबों:


250

attr()समारोह भी एक सेटर कार्य है। आप बस इसे एक खाली स्ट्रिंग पास कर सकते हैं।

$('body').attr('data-body','');

एक खाली स्ट्रिंग बिना किसी मूल्य के विशेषता बनाएगी।

<body data-body>

संदर्भ - http://api.jquery.com/attr/#attr-attributeName-value

Attr (विशेषता नाम, मान)


24
+1, लेकिन ओपी जानता है कि यह एक सेटर है। तथ्य यह है कि एक खाली स्ट्रिंग गुजरती है, लेकिन nullकुछ आश्चर्य की बात नहीं है।
जॉन

2
Javasctipt के कुछ अजीब व्यवहार हैं । यह जानते हुए कि ये विषमताएँ कहाँ से आयेंगी, सरप्राइज़ का तत्व निकाल देंगी: P
Lix

25
नोट: यह jQuery 1.7.2 के साथ काम नहीं करता है (मुझे पता है कि यह नवीनतम संस्करण नहीं है) लेकिन $(el).prop('data-body', true)मेरे लिए काम कर रहा है जहां मेरे लिए $(el).attr('data-body', '')डेटा-बॉडी = "डेटा-बॉडी" सेट करना समाप्त हो गया है।
पैट्रिक ओ'ओहर्टी

6
@ PatrickO'Doherty $(el).prop('data-body', true)मेरे लिए काम नहीं करता है। attr()काम करता है, लेकिन यह उस विशेषता के मूल्य के रूप में एक खाली स्ट्रिंग भी जोड़ता है जिसे मैं जोड़ना चाहता हूं।
वेबदेवी

1
@ और मुझे विश्वास है कि आप निष्कासन / प्रॉप कार्यों की तलाश कर रहे हैं । यह निर्भर करता है कि आप किस विशेषता को हटाने की कोशिश कर रहे हैं।
लिक्स

47

शायद कोशिश करें:

var body = document.getElementsByTagName('body')[0];
body.setAttribute("data-body","");

2
केवल इस समाधान ने मेरे लिए काम कियाvar btn = $(this).get(0); btn.setAttribute("disabled","");
gkiko

1
.Attr और .prop के साथ खिलवाड़ करने के बाद, जैसे अन्य सभी समाधानों और टिप्पणियों में यहाँ सुझाया गया है, मैंने अंत में पाया कि मूल JS के लिए वापस (या कम से कम "आधा रास्ता"), चाल चली, जैसे सुझाव दिया ऊपर टिप्पणी ... उस के लिए चीयर्स!
theCuBeMan

22

स्वीकार किए जाते हैं जवाब नहीं है अब और कोई नाम-मात्र विशेषता बनाने (सितंबर 2017 तक)।

नाम-मात्र विशेषताएँ बनाने के लिए आपको JQuery प्रोप () विधि का उपयोग करना चाहिए ।

$(body).prop('data-body', true)

वास्तव में, मैं सिर्फ "मूल्य" के बजाय, अपने चुनिंदा विकल्प में "मूल्य = 'सही" जोड़ रहा हूं। ओह।
RonLugge

मैं सोच रहा था कि कैसे स्वीकृत उत्तर में यह समाधान नहीं था! यह jquery का उपयोग करके सबसे साफ तरीका है।
19'18

Chrome में दुर्भाग्य से, ड्रॉपडाउन विकल्पों में काम नहीं करता है
MC9000

7

आप इसे jQuery के बिना कर सकते हैं!

उदाहरण:

document.querySelector('button').setAttribute('disabled', '');
<button>My disabled button!</button>

एक बूलियन विशेषता का मान सेट करने के लिए, जैसे कि अक्षम, आप किसी भी मूल्य को निर्दिष्ट कर सकते हैं। खाली स्ट्रिंग या विशेषता का नाम अनुशंसित मान हैं। यह सब मायने रखता है कि यदि विशेषता वास्तविक मूल्य की परवाह किए बिना मौजूद है, तो इसका मूल्य सही माना जाता है। विशेषता की अनुपस्थिति का अर्थ है कि इसका मूल्य गलत है। खाली स्ट्रिंग ("") में अक्षम विशेषता का मान सेट करके, हम अक्षम को सही पर सेट कर रहे हैं, जिसके परिणामस्वरूप बटन अक्षम हो रहा है।

से MDN Element.setAttribute ()


1
jQuery इस संबंध में बहुत परतदार है। जावास्क्रिप्ट लैस्ट में करने के लिए सबसे अच्छा है कि आप हर बार अपने आप को पागल कर दें कि हर बार jquery या ब्राउज़र बदलते हैं। यह इन सभी छोटी-छोटी क्लाइंट रूपरेखाओं के लिए जाता है।
MC9000

1

यकीन नहीं होता कि यह वास्तव में फायदेमंद है या मैं इस शैली को क्यों पसंद करता हूं लेकिन मैं क्या करता हूं (वेनिला जेएस में)

document.querySelector('#selector').toggleAttribute('data-something');

यह मूल्य के बिना सभी लोअरकेस में विशेषता को जोड़ देगा या इसे हटा देगा यदि यह पहले से ही तत्व पर मौजूद है।

https://developer.mozilla.org/en-US/docs/Web/API/Element/toggleAttribute

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.