এই প্রশ্নের অন্যটির অনুসরণে আমার দৃষ্টি আকর্ষণ হয়েছে যা এর একটি সদৃশ হিসাবে চিহ্নিত হয়েছিল ।
এই উত্তরটি সামান্য যুক্ত বিশদ সহ গ্রহণযোগ্য উত্তরকে সংক্ষিপ্তসার করে।
আপনি অপ্রয়োজনীয় চেক এড়িয়ে অপ্টিমাইজ করার চেষ্টা করছেন, এই ক্ষেত্রে এখানে এমন কারণ রয়েছে যা সম্পর্কে আপনাকে সচেতন হতে হবে:
- জাভাস্ক্রিপ্টের মাধ্যমে কোনও ডিওএম উপাদান হেরফের করে শ্রেণীর বৈশিষ্ট্যে নকল শ্রেণীর নাম থাকা সম্ভব নয় have আপনার যদি
class="collapse"
এইচটিএমএল থাকে, কলিং Element.classList.add("collapse");
অতিরিক্ত ধসের ক্লাস যোগ করবে না । আমি অন্তর্নিহিত বাস্তবায়ন জানি না, তবে আমি মনে করি এটি যথেষ্ট ভাল হওয়া উচিত।
- JQuery এর
addClass
এবং removeClass
বাস্তবায়নগুলিতে কিছু প্রয়োজনীয় চেক তৈরি করে (আমি উত্স কোডটি যাচাই করেছি )। কারণ addClass
, কিছু চেক করার পরে এবং যদি কোনও শ্রেণি বিদ্যমান থাকে তবে জিকুয়ারি আবার এটিকে যুক্ত করার চেষ্টা করবেন না। একইভাবে removeClass
, জিকুয়ারি একটি লাইনের সাথে সামথিংস করে cur.replace( " " + clazz + " ", " " );
যার কোন শ্রেণি যদি উপস্থিত থাকে তবেই তা মুছে ফেলবে।
লক্ষ্যণীয়, জেকুয়ারি removeClass
একটি অর্থহীন পুনরায় রেন্ডারিং এড়ানোর জন্য এর বাস্তবায়নে কিছু অপ্টিমাইজেশন করে। এটা এইভাবেই চলে
...
// only assign if different to avoid unneeded rendering.
finalValue = value ? jQuery.trim( cur ) : "";
if ( elem.className !== finalValue ) {
elem.className = finalValue;
}
...
সুতরাং আপনি যে সর্বোত্তম মাইক্রো অপ্টিমাইজেশন করতে পারেন তা হ'ল ফাংশন কল ওভারহেড এবং সম্পর্কিত বাস্তবায়ন পরীক্ষাগুলি এড়ানো aim
বলুন যে আপনি নামের একটি শ্রেণি টগল করতে চান collapse
, আপনি যদি ক্লাসটি যুক্ত করা বা সরিয়ে দেওয়ার বিষয়টি পুরোপুরি নিয়ন্ত্রণে রাখেন এবং collapse
ক্লাসটি প্রাথমিকভাবে অনুপস্থিত থাকে, তবে আপনি নিম্নলিখিত হিসাবে অনুকূলিত হতে পারেন:
$(document).on("scroll", (function () {
// hold state with this field
var collapsed = false;
return function () {
var scrollTop, shouldCollapse;
scrollTop = $(this).scrollTop();
shouldCollapse = scrollTop > 50;
if (shouldCollapse && !collapsed) {
$("nav .branding").addClass("collapse");
collapsed = true;
return;
}
if (!shouldCollapse && collapsed) {
$("nav .branding").removeClass("collapse");
collapsed = false;
}
};
})());
অন্যদিকে, যদি আপনি স্ক্রোল অবস্থানের পরিবর্তনের কারণে কোনও শ্রেণিতে টগল করছেন তবে আপনাকে স্ক্রোল ইভেন্ট হ্যান্ডলিংটি থ্রোটল করার জন্য সুপারিশ করা হচ্ছে ।
.hasClass
তখনই ব্যবহার করেছি যখন আমার ক্লাসের উপস্থিতি আছে কিনা তা খতিয়ে দেখা দরকার, যদি আমাকে কেবল ক্লাস বরাদ্দ করতে হয় - আমি ব্যবহার করি.addClass
। jQuery ক্লাসগুলি নকল করে না