একটি বাদে সমস্ত ক্লাস সরান


89

ভাল, আমি জানি যে কিছু jQuery ক্রিয়া সহ, আমরা একটি বিশেষ ডিভিতে প্রচুর ক্লাস যুক্ত করতে পারি:

<div class="cleanstate"></div>

ধরা যাক যে কয়েকটি ক্লিক এবং অন্যান্য জিনিসগুলির সাথে ডিভটি অনেক ক্লাস পায়

<div class="cleanstate bgred paddingleft allcaptions ..."></div>

সুতরাং, আমি কীভাবে একটি বাদ দিয়ে সমস্ত ক্লাস সরিয়ে ফেলতে পারি? আমি একমাত্র ধারণাটি এনেছি:

$('#container div.cleanstate').removeClass().addClass('cleanstate');

যদিও removeClass()মেরে সব ক্লাস, DIV আছে মাতাল আপ পেতে, কিন্তু পরে যে যোগ করার addClass('cleanstate')এটা স্বাভাবিক ফিরে যায়। অন্য সমাধানটি হ'ল বেস সিএসএস বৈশিষ্ট্যগুলির সাথে একটি আইডি বৈশিষ্ট্য রাখুন যাতে তারা মুছে না যায়, যা কার্যকারিতাও উন্নত করে, তবে আমি "। ক্ল্যানস্টেট" ব্যতীত অন্য সমস্ত থেকে মুক্তি পাওয়ার জন্য আরও একটি সমাধান জানতে চাই want

আমি এটি জিজ্ঞাসা করছি কারণ, বাস্তব স্ক্রিপ্টে, ডিভ বিভিন্ন শ্রেণীর পরিবর্তনের সাথে ভোগ করছে।


ক্লাস পান, " "এটিকে (স্পেস) দিয়ে বিভক্ত করুন এবং একে অপসারণ করবেন কি না তা প্রত্যেকের জন্য সিদ্ধান্ত নিন?
pimvdb

উত্তর:


205

এটি ২ টি পদক্ষেপে না করে আপনি attrযে শ্রেণীর মানটি চান সেগুলি দিয়ে সমস্ত মান মান দিয়ে ওভাররাইট করে একবারে পুরো মানটি পুনরায় সেট করতে পারেন:

jQuery('#container div.cleanstate').attr('class', 'cleanstate');

নমুনা: http://jsfiddle.net/jtmKK/1/


33

আপনি যে নির্দিষ্ট মানটি চান তার জন্য শ্রেণীর বৈশিষ্ট্যটি সরাসরি সেট করতে অ্যাটর ব্যবহার করুন :

$('#container div.cleanstate').attr('class','cleanstate');


4

সিএসএস অ্যানিমেশনের কারণে আপনার মাঝে মাঝে কিছু ক্লাস রাখা দরকার কারণ আপনি সমস্ত ক্লাস সরিয়ে দেওয়ার সাথে সাথে অ্যানিমেশনটি কাজ করতে পারে না। পরিবর্তে, আপনি কিছু ক্লাস রাখতে পারেন এবং বাকিগুলি এভাবে মুছে ফেলতে পারেন:

$('#container div.cleanstate').removeClass('removethis removethat').addClass('cleanstate');

আমি কিছু ক্লাস সরিয়ে উত্তর পছন্দ করি। আমি মনে করি কোডটি হতে পারে $('#container div.cleanstate').removeClass('removethis removethat').addClass('cleanstate');। আমি সম্পাদনা করার চেষ্টা করেছি, কিন্তু আবারও স্ট্যাকওভারফ্লো আপনাকে সহায়ক হতে দেয় না।
গুদেয়

2

ছিনতাইয়ের উত্তর সম্পর্কে এবং সম্পূর্ণতার জন্য এবং আপনি ভ্যানিলা সহ ক্যোয়ারী নির্বাচনকারীও ব্যবহার করতে পারেন

document.querySelector('#container div.cleanstate').className = "cleanstate";

0

আপনি যদি এক বা একাধিক ক্লাস রাখতে চান এবং এইগুলি বাদে ক্লাস চান তবে কী হবে। আপনি যেখানে সমস্ত ক্লাস অপসারণ করতে চান না সেখানে এই সমাধানগুলি কাজ করবে না that অ্যাটর এবং রিমুভ ক্লাস () ব্যবহার করে প্রথম ক্লাসে সমস্ত ক্লাস পুনরায় সেট করুন এবং তারপরে আবার সেই পার্টিকুলার ক্লাসটি সংযুক্ত করুন। আপনি যদি আবার পুনরায় সেট করা হচ্ছে এমন ক্লাসগুলিতে কিছু অ্যানিমেশন ব্যবহার করেন তবে এটি ব্যর্থ হবে।

আপনি যদি কিছু শ্রেণি বাদে কেবল সমস্ত ক্লাস সরিয়ে দিতে চান তবে এটি আপনার জন্য। আমার সমাধানটি হ'ল: AllExceptThese

Array.prototype.diff = function(a) {
            return this.filter(function(i) {return a.indexOf(i) < 0;});
        };
$.fn.removeClassesExceptThese = function(classList) { 
/* pass mutliple class name in array like ["first", "second"] */
            var $elem = $(this);

            if($elem.length > 0) {
                var existingClassList = $elem.attr("class").split(' ');
                var classListToRemove = existingClassList.diff(classList);
                $elem
                    .removeClass(classListToRemove.join(" "))
                    .addClass(classList.join(" "));
            }
            return $elem;
        };

এটি সমস্ত ক্লাস পুনরায় সেট করবে না, এটি কেবল প্রয়োজনীয় অপসারণ করবে।
আমার প্রজেক্টে আমার এটির দরকার ছিল যেখানে আমার সাথে কেবল ম্যাচের ক্লাসগুলি সরিয়ে ফেলতে হবে।

তুমি এটা ব্যবহার করতে পারো $(".third").removeClassesExceptThese(["first", "second"]);

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