মান ছাড়াই অ্যাট্রিবিউট সেট করুন


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
আমি এক্সএইচটিএমএল ব্যবহার করি না, আমি এইচটিএমএল 5 ব্যবহার করি
ডেভিড হেলসিং

2
@ ব্যবহারকারী1689607 কারণ আমি উত্পন্ন এইচটিএমএলটিকে স্ট্রিং হিসাবে সংরক্ষণ করছি এবং পরে এর বিপরীত অনুসন্ধান করা দরকার।
ডেভিড হেলসিং

4
@ এক্সপ্লোশনপিলস একটি উদাহরণ হ'ল requiredএইচটিএমএল 5 ফর্ম বৈধতার জন্য বৈশিষ্ট্য। আমি নিশ্চিত যে আরও অনেক বৈধ ব্যবহারের কেস রয়েছে।
জিরো

উত্তর:


250

attr()ফাংশন একটি সেটার ফাংশন। আপনি কেবল এটি একটি খালি স্ট্রিং পাস করতে পারেন।

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

একটি খালি স্ট্রিং সহজেই কোনও মান ছাড়াই বৈশিষ্ট্য তৈরি করবে will

<body data-body>

রেফারেন্স - http://api.jquery.com/attr/#attr-attributeName-value

অ্যাট্রি (বৈশিষ্ট্য নাম, মান)


24
+1, তবে ওপি জানে এটি একটি সেটর। খালি স্ট্রিং পাস করা কাজ করে তবে nullকিছুটা অবাক হয় না fact
জন

2
জাভাস্কিপ্টের কিছু অদ্ভুত আচরণ রয়েছে । এই অদ্ভুততাগুলি কোথায় ঘটে তা জেনে রাখার ফলে অতিরিক্তের উপাদান তৈরি হবে: পি
লিক্স

25
দ্রষ্টব্য: এটি jQuery 1.7.2 এর সাথে কাজ করে না (আমি জানি এটি সর্বশেষতম সংস্করণ নয়) তবে $(el).prop('data-body', true)আমার জন্য কাজ করে যেখানে আমার জন্য $(el).attr('data-body', '')ডেটা-বডি = "ডেটা-বডি" সেট করে।
প্যাট্রিক ও'ডোহার্টি

6
@ প্যাট্রিক ও ডুহার্টি $(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
.Ttr এবং .prop এর সাথে বিভ্রান্ত হওয়ার পরে, যেমনটি এখানে অন্যান্য সমস্ত সমাধান এবং মন্তব্যে প্রস্তাবিত হয়েছিল, অবশেষে আমি দেখতে পেলাম যে নেটিভ জেএসে ফিরে (বা কমপক্ষে "অর্ধপথ" ফিরে) ফিরে যেতে হবে, যেমনটি প্রস্তাবিত মত উপরে মন্তব্য ... তার জন্য চিয়ার্স!
TheCuBeMan

22

গৃহীত উত্তর নেই আর একটি নাম শুধুমাত্র অ্যাট্রিবিউট তৈরি (সেপ্টেম্বর 2017 এর হিসাবে)।

নামমাত্র বৈশিষ্ট্য তৈরি করতে আপনার JQuery প্রোপ () পদ্ধতিটি ব্যবহার করা উচিত ।

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

প্রকৃতপক্ষে, আমি কেবলমাত্র "মান" এর পরিবর্তে আমার নির্বাচিত বিকল্পটিতে "মান = 'সত্য'" যুক্ত করছি বলে মনে হচ্ছে। বিতৃষ্ণা।
রনলগ

আমি ভাবছিলাম যে গৃহীত উত্তরটিতে কীভাবে এই সমাধানটি পাওয়া যায় না! এটি jquery ব্যবহার করে সবচেয়ে পরিষ্কার উপায়।
denns

দুর্ভাগ্যক্রমে ক্রোমে, নির্বাচিত ড্রপডাউন বিকল্পগুলিতে কাজ করে না
MC9000

7

আপনি jQuery ছাড়াই এটি করতে পারেন!

উদাহরণ:

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

বুলিয়ান বৈশিষ্ট্যের মান সেট করতে, যেমন অক্ষম, আপনি যে কোনও মান নির্দিষ্ট করতে পারেন। একটি খালি স্ট্রিং বা বৈশিষ্ট্যের নাম প্রস্তাবিত মান are সমস্ত বিষয় হ'ল বৈশিষ্ট্যটি যদি তার আসল মান নির্বিশেষে কিছুটা উপস্থিত থাকে তবে এর মানটিকে সত্য বলে বিবেচনা করা হয়। গুণাবলীর অনুপস্থিতির অর্থ এর মানটি মিথ্যা। শূন্য স্ট্রিং ("") এ অক্ষম বৈশিষ্ট্যের মান সেট করে আমরা সত্যকে অক্ষম করে দিচ্ছি, যার ফলস্বরূপ বোতামটি অক্ষম হয়ে গেছে।

থেকে MDN Element.setAttribute ()


1
jQuery এই ক্ষেত্রে খুব flakey। জাভাস্ক্রিপ্টে করণীয় সেরা আপনি যাতে প্রতিবার jquery বা ব্রাউজার বদলে নিজেকে ক্রেজি। এটি এই সমস্ত বগি ক্লায়েন্ট ফ্রেমওয়ার্কের জন্য যায়।
এমসি 9000

1

এটি সত্যিই উপকারী কিনা তা নিশ্চিত না বা কেন আমি এই স্টাইলটিকে প্রাধান্য দিচ্ছি তবে আমি কী করছি (ভ্যানিলা জেএসে):

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

এটি মান ব্যতীত সমস্ত ছোট হাতের অক্ষরে যুক্ত করে বা এটি উপাদানটিতে ইতিমধ্যে উপস্থিত থাকলে এটি সরিয়ে ফেলবে।

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.