.prop ('চেক করা', মিথ্যা) বা .removeAttr ('চেকড')?


115

প্রপ পদ্ধতিটি প্রবর্তনের সাথে সাথে এখন আমাকে একটি চেকবক্সটি আনচেক করার স্বীকৃত উপায়টি জানতে হবে। তাই কি:

$('input').filter(':checkbox').removeAttr('checked');

অথবা

$('input').filter(':checkbox').prop('checked',false);

4
আপনি কি জন রেসিগের পোস্ট পড়েছেন? ejohn.org/blog/jquery-16- এবং-attr
জারেড ফারিশ

উত্তর:


130

jQuery 3

JQuery এর 3 হিসাবে, removeAttrনেই না সংশ্লিষ্ট সম্পত্তি সেট falseআর:

JQuery এর 3.0-এর আগে ব্যবহার .removeAttr()একটি বুলিয়ান অ্যাট্রিবিউট উপর যেমন checked, selectedঅথবা readonlyএছাড়াও সংশ্লিষ্ট নামে সম্পত্তি সেট হবে false। এই আচরণটি ইন্টারনেট এক্সপ্লোরারের প্রাচীন সংস্করণগুলির জন্য প্রয়োজনীয় ছিল তবে আধুনিক ব্রাউজারগুলির জন্য এটি সঠিক নয় কারণ বৈশিষ্ট্যটি প্রাথমিক মান উপস্থাপন করে এবং সম্পত্তিটি বর্তমান (গতিশীল) মানকে উপস্থাপন করে।

.removeAttr( "checked" )কোনও ডিওএম উপাদান ব্যবহার করা প্রায় সর্বদা ভুল । কেবলমাত্র এটি কার্যকর হতে পারে যদি পরে ডিওএম কোনও HTML স্ট্রিংয়ে সিরিয়ালায়িত হয় serial অন্যান্য সমস্ত ক্ষেত্রে, .prop( "checked", false )পরিবর্তে ব্যবহার করা উচিত।

পরিবর্তণের

সুতরাং .prop('checked',false)এই সংস্করণটি ব্যবহার করার সময় কেবল সঠিক উপায়।


আসল উত্তর (২০১১ থেকে):

অন্তর্নিহিত বুলিয়ান বৈশিষ্ট্যগুলির মধ্যে এমন বৈশিষ্ট্যগুলির জন্য (যার checkedমধ্যে একটি হ'ল) removeAttrস্বয়ংক্রিয়ভাবে অন্তর্নিহিত সম্পত্তিটিকে সেট করে false। (নোট করুন যে এটি jQuery 1.6.1 এ যুক্ত পিছনের-সামঞ্জস্য "ফিক্সগুলি" এর মধ্যে রয়েছে)।

সুতরাং, হয় কাজ করবে ... তবে আপনি যে দ্বিতীয় উদাহরণটি (ব্যবহার করে prop) দিয়েছেন তা হ'ল দুটিটির আরও সঠিক। যদি আপনার লক্ষ্যটি চেকবাক্সটি চেক করা না হয়, আপনি সত্যিকার অর্থে সম্পত্তিটি প্রভাবিত করতে চান এবং এটি করার জন্য কোনও দরকার নেই removeAttr


36
@ স্ট্যান্ডু: আপনি পারবেন , কিন্তু আপনার উচিত হবে না। দস্তাবেজগুলি থেকে: " দ্রষ্টব্য:removeProp() চেক করা, অক্ষম করা বা নির্বাচিত মতো দেশীয় বৈশিষ্ট্যগুলি অপসারণ করতে [ ] ব্যবহার করবেন না This এটি সম্পত্তি পুরোপুরি সরিয়ে ফেলবে এবং একবার মুছে ফেলা হলে পুনরায় উপাদানটিতে যোগ করা যাবে না .prop()these এই বৈশিষ্ট্যগুলি মিথ্যাতে সেট করতে ব্যবহার করুন পরিবর্তে." removePropসত্যিকার অর্থে শুধুমাত্র কাস্টম বৈশিষ্ট্যগুলির সাথে ব্যবহারের জন্য।
জন ফ্ল্যাটনেস

17

ব্যবহার checked: সত্য, চেকবক্সের মিথ্যা সম্পত্তি

JQuery:

if($('input[type=checkbox]').is(':checked')) {
    $(this).prop('checked',true);
} else {
    $(this).prop('checked',false);
}

অন্য একটি লাইনার, if (এটি) .প্রপ ('চেকড', $ ('ইনপুট [টাইপ = চেকবক্স]')) ব্যবহার করে আমরা নির্মূল করতে পারি; (': চেক করা'));
ইউসুফ হাসান

8

আমি উভয়ই ব্যবহার করার প্রস্তাব দিই, প্রপ এবং অ্যাটর কারণ ক্রোমের সাথে আমার সমস্যা ছিল এবং আমি উভয় ফাংশন ব্যবহার করে এটি সমাধান করেছি।

if ($(':checkbox').is(':checked')){
    $(':checkbox').prop('checked', true).attr('checked', 'checked');
}
else {
    $(':checkbox').prop('checked', false).removeAttr('checked');
}

হ্যাঁ, Chrome এর জন্য ব্যবহার করুন: $("input[type='checkbox'], input[type='radio']").prop("checked", false).attr("checked", false).removeAttr("checked");
ডান্ডা

ইনপুট রেডিও এবং চেকবক্সটি প্রতিস্থাপন করতে আমি কাস্টম উপাদান (সিএসএস + জেএস) ব্যবহার করি। এটি আমার পক্ষে কাজ করা একমাত্র উপায় way ধন্যবাদ!
সিলভিও দেলগাদো

3

একই জিনিসটি করার আরেকটি বিকল্প হ'ল টাইপ = চেকবক্স বৈশিষ্ট্যটিতে ফিল্টার করা :

$('input[type="checkbox"]').removeAttr('checked');

অথবা

$('input[type="checkbox"]').prop('checked' , false);

স্মরণকারক যে বৈশিষ্ট্য এবং বৈশিষ্ট্যের মধ্যে পার্থক্য নির্দিষ্ট পরিস্থিতিতে গুরুত্বপূর্ণ হতে পারে। JQuery এর আগে 1.6 , কিছু বৈশিষ্ট্য পুনরুদ্ধার করার সময় .attr () পদ্ধতিটি কখনও কখনও সম্পত্তি মানগুলিকে বিবেচনা করে নেয়, যা অসঙ্গত আচরণের কারণ হতে পারে। JQuery 1.6 হিসাবে, .prop () পদ্ধতি স্পষ্টভাবে সম্পত্তি মান পুনরুদ্ধার করার একটি উপায় সরবরাহ করে, যখন .attr () বৈশিষ্ট্যগুলি পুনরুদ্ধার করে।

আরও জানুন ...


2
প্রশ্নটি ছিল "এর মধ্যে কোনটি আরও সঠিক",? "এটি করার কোনও অন্য উপায় আছে কি না?"। আপনি প্রশ্নের উত্তর দেওয়ার চেষ্টা করেছেন বলে মনে হচ্ছে না
অ্যান্ড্রু স্টাবস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.