JQuery সহ উপাদানগুলির জন্য শ্রেণীর তালিকা পান


657

কোনও উপাদানকে বরাদ্দ করা ক্লাসগুলির মধ্যে অ্যারেগুলিকে লুপ করার বা অ্যারিকে দেওয়ার কোনও উপায় কি jQuery রয়েছে?

প্রাক্তন।

<div class="Lorem ipsum dolor_spec sit amet">Hello World!</div>

আমি উপরের "ডলোর_স্পেক" এর মতো একটি "বিশেষ" শ্রেণীর সন্ধান করব। আমি জানি যে আমি hasClass () ব্যবহার করতে পারি তবে প্রকৃত শ্রেণির নামটি সম্ভবত অগত্যা জানা নাও যেতে পারে।


আপনি যদি ক্লাসের নামটি যদি না জানেন, আপনাকে হ্যাশ ক্লাস () ব্যবহার করা থেকে বিরত রাখছেন, তবে অ্যারেতে এটি কোনটি তা আপনি কীভাবে জানতে চান?
ডুমস্পর্ক 13

আমি এমন একটি ফর্ম ডিজাইন করছি যেখানে আমি jQuery এর সাথে কিছু প্রাথমিক বৈধতা করছি। আমি ত্রুটি ডিভের শ্রেণি তালিকায় ইনপুট উপাদানটির আইডি যুক্ত করছি যদি একটি উত্পন্ন হয়। আমি তখন ত্রুটিযুক্ত ডিভিতে ক্লিক করে ত্রুটিযুক্ত ইনপুট উপাদানটিকে ফোকাস করতে সক্ষম করে তুলছি। এই স্ক্রিপ্টটি একাধিক ফর্মের জন্য ব্যবহৃত হতে চলেছে। তাই আমি স্ক্রিপ্টের আইডিকে হার্ড-কোড করতে চাই না।
বুগাবিল 13

1
ঠিক আছে, আমি বুঝতে পারি কেন আপনি হার্ডকোড করতে চান না। তবে আপনি যদি redsquare এর উদাহরণটি দেখার জন্য কিছুক্ষণ সময় নেন তবে আপনি দেখতে পাবেন যে আপনি যদি ব্লকটিতে হার্ডকোড 'সামার ক্লাস' পেয়েছেন। যে কোনও উপায়ে আপনি ভেরিয়েবলের মাধ্যমে এটি অর্জন করতে পারেন।
ডুমস্পর্ক 13

ক্লাস অ্যাট্রিবিউটটি ব্যবহার না করে আপনি নিজের নেমস্পেসের ভিতরে একটি ত্রুটি তালিকা পরিবর্তনশীল থাকতে পারে যাতে ত্রুটিযুক্ত উপাদানগুলির সাথে DOM উল্লেখ রয়েছে। সুতরাং প্রতিবার অ্যাট্রিবিউট তালিকাটি টানতে হবে, এটি পুনরাবৃত্তি করবে, DOM উপাদানটি সন্ধান করুন এবং এটি ফোকাস করুন elim
ডুমস্পর্ক 13

উত্তর:


731

আপনি document.getElementById('divId').className.split(/\s+/);ক্লাস নামের একটি অ্যারে পেতে ব্যবহার করতে পারেন ।

তারপরে আপনি পুনরাবৃত্তি করতে পারেন এবং আপনি যা চান তা খুঁজে পেতে পারেন।

var classList = document.getElementById('divId').className.split(/\s+/);
for (var i = 0; i < classList.length; i++) {
    if (classList[i] === 'someClass') {
        //do something
    }
}

jQuery আপনাকে এখানে সত্যিই সহায়তা করে না ...

var classList = $('#divId').attr('class').split(/\s+/);
$.each(classList, function(index, item) {
    if (item === 'someClass') {
        //do something
    }
});

4
আমি যা করেছি তা হুবহু, তবে আমি নিশ্চিত নই যে jQuery ফাংশনটিতে এমন কোনও বিল্ড রয়েছে যা আপনাকে ক্লাসগুলির একটি সংগ্রহ দিয়েছে।
Sander

36
এফওয়াইআই: jQuery ক্লাসের নাম.স্প্লিট (/ \ গুলি + /) ব্যবহার করে
kͩeͣmͮpͥ ͩ

70
নিজেকে একটি jQuery প্লাগইন যুক্ত করুন:$.fn.classList = function() {return this[0].className.split(/\s+/);};
ripper234

1
বা তারপরে আপনি এটি করতে পারেন: if ($.inArray("someclass",classList)>=0) { /* hasClass someclass*/ }
সাম্বোমার্টিন

এখানে একটি জাভাস্ক্রিপ্ট বিশেষজ্ঞ নয়। আপনি কি আমাকে বলতে পারবেন যে বিভাজন (/ \ গুলি + /) কেবল কেবল বিভাজন ("") করার চেয়ে ভাল? এটি এফএফ 23 / ক্রোম 28 / আইই 8 তে আমার জন্য একই কাজ করে।
রবার্তো লিনিয়ার্স

288

কেউ কেন কেবল তালিকাভুক্ত হয়নি।

$(element).attr("class").split(/\s+/);

সম্পাদনা: @ মার্কাআমেরি যেমন উল্লেখ করেছেন, আপনি কেবলমাত্র .split(' ')ক্লাসের নামগুলি যে কোনও ধরণের সাদা জায়গার দ্বারা পৃথক করতে পারবেন না can't


6
এটি স্বীকৃত উত্তরের একটি অংশ ... আমার একটি উপাদানটিতে প্রয়োগ করা সমস্ত ক্লাসের প্রয়োজন ছিল।
বুগাবিল

54
কারণ এটি ভুল! শ্রেণিগুলি যে কোনও ধরণের সাদা স্পেস দ্বারা পৃথক করা যায় (যেমন আপনি একাধিক লাইনে আপনার এইচটিএমএলে একটি দীর্ঘ শ্রেণীর বৈশিষ্ট্যটি গুটিয়ে রাখতে পারেন), তবে এই উত্তরটি এতে অ্যাকাউন্টে ব্যর্থ হয়। $('<div class="foo bar baz">').attr("class").split(' ')আপনার ব্রাউজার কনসোলে আটকানোর চেষ্টা করুন (সেখানে একটি ট্যাব অক্ষর রয়েছে); আপনি ["foo", "bar baz"]সঠিক শ্রেণীর তালিকার পরিবর্তে পাবেন ["foo", "bar", "baz"]
মার্ক আমেরিকা

2
@ মার্কআমেরি ঠিক আছে। আপনার যদি একটি থাকে class="foo <lots of spaces here> bar", আপনি খালি স্ট্রিং উপাদানগুলির সাথে একটি অ্যারে দিয়ে শেষ করবেন।
জ্যাকব ভ্যান লিনজেন

4
আমি মনে করি 99% ক্ষেত্রে এই সমাধানটি কার্যকর, অর্থাত্ আপনি এইচটিএমএল নিয়ন্ত্রণ করছেন are আমি এইচটিএমএল স্ট্যান্ডার্ড এটির অনুমতি দেয় এমনকি আমাদের ক্লাস-নামগুলির মধ্যে ট্যাব বা একাধিক স্পেসের সম্ভাবনা সমর্থন করার কোনও কারণের কথা ভাবতে পারি না।
গর্ডন রাউস

5
@ গর্ডনরাউস ক্লাসগুলির তালিকায় একটি অতিরিক্ত স্থান রচনা করা খুব সাধারণ বিষয়, বিশেষত যদি কোনও ধরণের যুক্তি ক্লাসের তালিকাটি লিখে থাকে।
এরিক

142

সমর্থনকারী ব্রাউজারগুলিতে, আপনি ডোম উপাদানগুলির classListসম্পত্তি ব্যবহার করতে পারেন ।

$(element)[0].classList

এটি উপাদানটির সমস্ত শ্রেণীর তালিকা করে এমন একটি অ্যারের মতো অবজেক্ট।

আপনি যদি পুরানো ব্রাউজার সংস্করণগুলিকে সমর্থন করতে চান যা classListসম্পত্তিটি সমর্থন করে না , লিঙ্কযুক্ত MDN পৃষ্ঠায় এর জন্য একটি শিমও অন্তর্ভুক্ত রয়েছে - যদিও শিমও আইই 8 এর নীচে ইন্টারনেট এক্সপ্লোরার সংস্করণগুলিতে কাজ করবে না।


পরিষ্কার উত্তর এবং চাকা পুনরায় উদ্বেগ না।
মার্কো সুলা

@ মারকো সুল্লা: অপ্রচলিত সফ্টওয়্যার সমর্থন ছাড়া এটির আসলেই একটি অভাব রয়েছে। .classListএটি সত্যিকারের অ্যারে নয় এবং যেমন পদ্ধতিতে .indexOf(⋯)এটি কাজ করে না। এটি কেবলমাত্র একটি "অ্যারে-জাতীয় বস্তু", যেখানে .className.split(/\s+/).indexOf(⋯)(গৃহীত উত্তর থেকে) কাজ করে।
ইনকনিস মিসেসি

আপনি যে কোনও পুনরাবৃত্তিকে সহজেই কোনও Arrayব্যবহারে রূপান্তর করতে পারেন [...iterable]বাArray.from(iterable)
মার্কো সুলা

142

এখানে একটি jQuery প্লাগইন রয়েছে যা মিলবে এমন উপাদান (গুলি) এর সমস্ত শ্রেণীর একটি অ্যারে ফিরিয়ে দেবে

;!(function ($) {
    $.fn.classes = function (callback) {
        var classes = [];
        $.each(this, function (i, v) {
            var splitClassName = v.className.split(/\s+/);
            for (var j = 0; j < splitClassName.length; j++) {
                var className = splitClassName[j];
                if (-1 === classes.indexOf(className)) {
                    classes.push(className);
                }
            }
        });
        if ('function' === typeof callback) {
            for (var i in classes) {
                callback(classes[i]);
            }
        }
        return classes;
    };
})(jQuery);

এটি ব্যবহার করুন

$('div').classes();

আপনার ক্ষেত্রে ফিরে আসে

["Lorem", "ipsum", "dolor_spec", "sit", "amet"]

আপনি প্রতিটি ক্লাসে ডাকার পদ্ধতিতে কোনও ফাংশনও পাস করতে পারেন

$('div').classes(
    function(c) {
        // do something with each class
    }
);

এখানে একটি জেএসফিডেল আমি প্রদর্শন এবং পরীক্ষার জন্য সেট আপ করেছি http://jsfiddle.net/GD8Qn/8/

জাভাস্ক্রিপ্ট Minified

;!function(e){e.fn.classes=function(t){var n=[];e.each(this,function(e,t){var r=t.className.split(/\s+/);for(var i in r){var s=r[i];if(-1===n.indexOf(s)){n.push(s)}}});if("function"===typeof t){for(var r in n){t(n[r])}}return n}}(jQuery);

কোনও ইভেন্টের শ্রেণীর নাম বৈশিষ্ট্যে ক্লাস অনুলিপি করার সময় ফুলক্যালেন্ডারের জন্য উপযুক্ত উপযুক্ত ।
ড্যান পাওয়ার

78

আপনার এটি চেষ্টা করা উচিত:

$("selector").prop("classList")

এটি উপাদানটির সমস্ত বর্তমান শ্রেণীর একটি অ্যারে প্রদান করে।


এটি অনেক নিকৃষ্ট যে গ্রহণযোগ্য উত্তর, এই পদ্ধতিটি ব্যবহার না করার কোনও কারণ আছে কি?
রোজা

5
আচ্ছা আমি জানি না। তবে এটি ডিওএম উপাদান থেকে সম্পত্তি পাওয়ার উপযুক্ত উপায়। এবং "ক্লাসলিস্ট" হ'ল এমন সম্পত্তি যা আপনাকে উপাদানটিতে প্রয়োগ করা সিএসএস ক্লাসগুলির একটি অ্যারে দেয়।
পি.পেটকভ

@ রোজ্জা সম্ভবত এটি আবার পাওয়া যায় না? তবে আমি বলব এটি এখনকার সবচেয়ে উপযুক্ত পদ্ধতি, আপনি যদি jQuery ব্যবহার না করেন, তবে .classListএটি একটি সহজ সমাধান - আপনি কেবলমাত্র অসঙ্গতি এবং / অথবা ব্রাউজার সমর্থন হারিয়ে
যাওয়াতে

@ ডেনিস ৯৮ ভাল কল, আমি মাঝে মাঝে ভুলে যাই যে কীভাবে নতুন বৈশিষ্ট্যগুলি সম্প্রতি প্রকাশিত হয়েছে। আমি সরল .classList
জেএসও

1
নোট করুন যে classListসম্পত্তিটি এসভিজি উপাদানগুলির জন্য IE 10/11 তে কাজ করে না (যদিও এটি HTML উপাদানগুলির জন্য কাজ করে)। বিকাশকারী.মোজিলা.অর্গ.ইন-
ইউএস


7

হালনাগাদ:

যেমন @ রায়ান লিওনার্ড সঠিকভাবে উল্লেখ করেছেন, আমার উত্তরটি আমার নিজের পক্ষে যে বিন্দুটি তৈরি হয়েছে তা সত্যিই ঠিক করে না ... আপনার স্ট্রিং.রেপ্লেস (/ + / জি, "") দিয়ে দ্বিগুণ স্পেস দুটি ছাঁটাই এবং অপসারণ করা দরকার You .. অথবা আপনি el.className বিভক্ত করতে পারেন এবং তারপরে (উদাহরণস্বরূপ) arr.filter (বুলিয়ান) দিয়ে খালি মানগুলি সরিয়ে ফেলতে পারেন।

const classes = element.className.split(' ').filter(Boolean);

বা আরও আধুনিক

const classes = element.classList;

পুরানো:

প্রদত্ত সমস্ত উত্তর সহ, আপনি কখনই ব্যবহারকারীর .trim () (বা ri .Trim ()) এ ভুলে যাবেন না

কারণ ক্লাসগুলি যুক্ত হয়ে যায় এবং সরানো হয়, এমনটি ঘটতে পারে যে শ্রেণীর স্ট্রিংয়ের মধ্যে একাধিক স্পেস রয়েছে .. যেমন 'শ্রেণী 1 শ্রেণি 2 শ্রেণি 3' ..

এটি ['class1', 'class2', '', '', '', 'class3'] তে পরিণত হবে ...

আপনি যখন ছাঁটা ব্যবহার করবেন তখন সমস্ত একাধিক স্পেস সরানো হবে ..


2
এটি ভুল (এবং কোনও উত্তর নয়)। স্ট্রিং.ট্রিম () এবং $ .Trim () উভয়ই সমস্ত নেতৃস্থানীয় এবং অনুসরণকারী শ্বেতস্পেস সরান এবং বাকী স্ট্রিংটি একা রেখে যান। jsconsole.com /?% 22% 20% 20a% 20% 20b% 20% 20% 22.trim ()
রায়ান লিওনার্ড

আপনি কি উত্তরগুলি একবার দেখেছেন? সমস্ত নেটিভ জেএস সলিউশনগুলি হোয়াইটস্পেসের শীর্ষস্থানীয় এবং অনুসরণ করার জন্য পরীক্ষা করে না, সুতরাং এই ত্রুটিযুক্ত শ্রেণীর তালিকা দেয় কারণ অ্যারেতে খালি ক্লাস থাকবে ..
জিকুয়েরি

2
আমি অন্যান্য উত্তরগুলি দেখেছি এবং সম্মত হয়েছি যে শ্রেণীর নামের মধ্যে সাদা স্থান সরিয়ে নেওয়া উচিত। আমি ইঙ্গিত করছিলাম যে ক) এটি অন্যান্য সমাধানগুলির জন্য একটি মন্তব্য হওয়া উচিত, কারণ এটি একটি সম্পূর্ণ উত্তর নয়) খাঁটি () আপনার প্রয়োজনীয়তা অর্জনের জন্য একাধিক স্পেস সরিয়ে দেয় না
রায়ান লিওনার্ড

1
আপনি প্রকৃতপক্ষে পুরোপুরি সঠিক ... আমার তাড়াতাড়ি মন্তব্যের জন্য দুঃখিত .. এটি এর মধ্যে থাকা স্থানগুলি সরিয়ে দেয় না ... s.trim ()। প্রতিস্থাপন (/ + / জি, "") বা কিছু প্রয়োজন হবে ক্লাসের মধ্যে থাকা সমস্ত একাধিক স্পেস সরিয়ে ফেলতে .. তারপরে, এলক্লাসলিস্টটি প্রায় বিস্তৃতভাবে সমর্থিত, আমি মনে করি এটি ঠিক করে দিচ্ছি ..
ডাচক্যাভ

1
মোটেই কোন সমস্যা নেই. সুখীভাবে upvated, .classListএকটি অনেক ক্লিনার পদ্ধতির!
রায়ান লিওনার্ড

7
$('div').attr('class').split(' ').each(function(cls){ console.log(cls);})

2
এটি একটি ভয়াবহ অপব্যবহার .map; .eachআপনার যদি .mapফেরতের মান না লাগে তবে ব্যবহার করুন । কোনও সাদা স্থানের চেয়ে স্পেসে বিভক্ত হওয়াও ভাঙা হয়েছে - stackoverflow.com/a/10159062/1709587 এ আমার মন্তব্য দেখুন । এমনকি যদি এই পয়েন্টগুলির কোনওটি সত্য নাও হয় তবে এটি পৃষ্ঠায় নতুন কিছু যুক্ত করে না। -1!
মার্ক আমেরিকা

3

এটি আপনাকেও সহায়তা করতে পারে। সন্তানের উপাদানগুলির ক্লাস পেতে আমি এই ফাংশনটি ব্যবহার করেছি ..

function getClickClicked(){
    var clickedElement=null;
    var classes = null;<--- this is array
    ELEMENT.on("click",function(e){//<-- where element can div,p span, or any id also a class
        clickedElement = $(e.target);
        classes = clickedElement.attr("class").split(" ");
        for(var i = 0; i<classes.length;i++){
            console.log(classes[i]);
        }
        e.preventDefault();
    });
}

আপনার ক্ষেত্রে আপনি doler_ipsum ক্লাস চান এখন আপনি এটি করতে পারেন calsses[2];


2

এর জন্য ধন্যবাদ - আমি একই ধরণের সমস্যা পেয়েছিলাম, কারণ আমি ক্রমবর্ধমানভাবে সম্পর্কিত বস্তুগুলির শ্রেণিবদ্ধের নামগুলি শ্রেণিবদ্ধ করার চেষ্টা করছি, যদিও এই নামগুলি সম্ভবত আমার স্ক্রিপ্টে জানা থাকতে পারে না।

আমার স্ক্রিপ্টে, আমি ট্যাগটি আরও বর্গের শ্রেণি দিয়ে <a>সহায়তা পাঠ্য চালু / বন্ধ করার জন্য একটি ট্যাগ চাই এবং তারপরে এটির পাঠ্যকে শ্রেণীর ক্লাসটি দিয়ে যাই । এই কোডটি jQuery ব্যবহার করে সম্পর্কিত উপাদানগুলি সফলভাবে সন্ধান করছে:<a>[some_class]toggle[some_class]_toggle

$("a.toggle").toggle(function(){toggleHelp($(this), false);}, function(){toggleHelp($(this), true);});

function toggleHelp(obj, mode){
    var classList = obj.attr('class').split(/\s+/);
    $.each( classList, function(index, item){
    if (item.indexOf("_toggle") > 0) {
       var targetClass = "." + item.replace("_toggle", "");
       if(mode===false){$(targetClass).removeClass("off");}
       else{$(targetClass).addClass("off");}
    }
    });
} 

ধন্যবাদ অ্যালান, আমি অনুরূপ কিছু করছি, আমি আশ্চর্য হয়েছি যে এটি করার সহজ উপায় নেই।
এরিক কিগাথি

- 1 - টিএল; ডাঃ, সরাসরি স্পর্শের সাথে প্রাসঙ্গিক নয় এমন একটি স্পর্শকীর উপরে চলে যায়।
মার্ক আমেরিকা

2

এটা চেষ্টা কর. এটি আপনাকে নথির সমস্ত উপাদান থেকে সমস্ত ক্লাসের নাম পাবে।

$(document).ready(function() {
var currentHtml="";
$('*').each(function() {
    if ($(this).hasClass('') === false) {
        var class_name = $(this).attr('class');
        if (class_name.match(/\s/g)){
            var newClasses= class_name.split(' ');
            for (var i = 0; i <= newClasses.length - 1; i++) {
                if (currentHtml.indexOf(newClasses[i]) <0) {
                    currentHtml += "."+newClasses[i]+"<br>{<br><br>}<br>"
                }
            }
        }
        else
        {
            if (currentHtml.indexOf(class_name) <0) {
                currentHtml += "."+class_name+"<br>{<br><br>}<br>"
            }
        }
    }
    else
    {
        console.log("none");
    }
});
$("#Test").html(currentHtml);

});

এখানে কাজের উদাহরণটি: https://jsfiddle.net/raju_sumit/2xu1ujoy/3/


1

টাইপ ইমেজের একটি উপাদানটির জন্য আমারও একই সমস্যা ছিল। উপাদানটি একটি নির্দিষ্ট শ্রেণির ছিল কিনা তা আমার খতিয়ে দেখার দরকার ছিল। প্রথমে আমি চেষ্টা করেছিলাম:

$('<img>').hasClass("nameOfMyClass"); 

তবে আমি একটি সুন্দর পেয়েছি "এই উপাদানটির জন্য এই ফাংশনটি উপলভ্য নয়"।

তারপরে আমি ডিওএম এক্সপ্লোরারটিতে আমার উপাদানটি পরিদর্শন করেছিলাম এবং আমি দেখতে পেলাম একটি খুব দুর্দান্ত বৈশিষ্ট্য যা ক্লাসনেম: এটিতে খালি জায়গাগুলি দ্বারা পৃথক করা আমার উপাদানটির সমস্ত শ্রেণীর নাম রয়েছে।

$('img').className // it contains "class1 class2 class3"

আপনি এটি পেয়ে গেলে, স্ট্রিংটিকে যথারীতি ভাগ করুন।

আমার ক্ষেত্রে এটি কাজ করেছে:

var listOfClassesOfMyElement= $('img').className.split(" ");

আমি ধরে নিচ্ছি যে এটি অন্যান্য ধরণের উপাদানগুলির সাথে কাজ করবে (img ছাড়াও)।

আশা করি এটা সাহায্য করবে.


0

জাভাস্ক্রিপ্ট ডোম একটি নোড উপাদান জন্য একটি শ্রেণি তালিকা বৈশিষ্ট্য সরবরাহ করে। সহজভাবে ব্যবহার

  element.classList

ফর্মের একটি বস্তু ফেরত দেবে

  DOMTokenList {0: "class1", 1: "class2", 2: "class3", length: 3, item: function, contains: function, add: function, remove: function…}

অবজেক্টটির রয়েছে এমন বৈশিষ্ট্যগুলি রয়েছে যা আপনি ব্যবহার করতে পারেন এমনগুলি যুক্ত করুন, সরান


স্ট্যাকওভারফ্লো . com / a / 5457148 / 1709587 এর নিকৃষ্ট ডুপ্লিকেট যা আপনার আগে 3 বছর আগে পোস্ট করা হয়েছিল; -1।
মার্ক আমেরিকা

-3

কিছুটা দেরি হলেও প্রসারিত () ফাংশনটি ব্যবহার করে আপনাকে যে কোনও উপাদানগুলিতে "হেসক্লাস ()" কল করতে দেয়, যেমন:
var hasClass = $('#divId').hasClass('someClass');

(function($) {
$.extend({
    hasClass: new function(className) {
        var classAttr = $J(this).attr('class');
        if (classAttr != null && classAttr != undefined) {
            var classList = classAttr.split(/\s+/);
            for(var ix = 0, len = classList.length;ix < len;ix++) {
                if (className === classList[ix]) {
                    return true;
                }
            }
        }
        return false;
    }
}); })(jQuery);

10
প্রশ্ন ছিল না।
টমাস

5
এছাড়াও, jQuery এর 1.2 সংস্করণ থেকে এই ফাংশনটি বিল্ট-ইন ছিল।
অ্যান্ড্রু

-3

প্রশ্নটি হল জ্যাকারি কী করার জন্য ডিজাইন করা হয়েছে।

$('.dolor_spec').each(function(){ //do stuff

এবং কেন কেউ উত্তর হিসাবে .find () দেয়নি ?

$('div').find('.dolor_spec').each(function(){
  ..
});

নন-আইই ব্রাউজারগুলির জন্য ক্লাসলিস্টও রয়েছে:

if element.classList.contains("dolor_spec") {  //do stuff

3
- 1; অন্যান্য সমস্যার মধ্যে, আপনার প্রথম দুটি কোড স্নিপেটগুলি জিজ্ঞাসিত প্রশ্নের সাথে সম্পর্কিত নয় এবং আপনার চূড়ান্ত স্নিপেট একটি বাক্য গঠন ত্রুটি।
মার্ক আমেরিকা

-4

আপনি এখানে যান, সমস্ত শ্রেণীর একটি অ্যারে ফিরিয়ে দেওয়ার জন্য কেবল রিডকয়ের জবাবটি টুইট করা হয়েছে :

function classList(elem){
   var classList = elem.attr('class').split(/\s+/);
    var classes = new Array(classList.length);
    $.each( classList, function(index, item){
        classes[index] = item;
    });

    return classes;
}

একটি jQuery উপাদান ফাংশন পাস, যাতে একটি নমুনা কল হতে পারে:

var myClasses = classList($('#myElement'));

3
ক্লাসলিস্ট অ্যারে দিয়ে পুনরাবৃত্তি কেন, ক্লাস অ্যারেতে সমস্ত উপাদান যুক্ত করে ক্লাস অ্যারে ফিরিয়ে দিন? শুধু ক্লাসলিস্টে ফিরে একই কৌশল করা উচিত, তাই না?
মার্টিজন

নাঃ। যেহেতু আমরা এমন একটি পরিস্থিতিতে উল্লেখ করছি যেখানে একই উপাদানটির জন্য অনেকগুলি শ্রেণি রয়েছে। যদি এটি এত সহজ ছিল, আমরা এখানে এই থ্রেডে
ছিলাম

8
এই থ্রেডটি ক্লাসগুলির একটি তালিকা ফেরত দেওয়ার বিষয়ে, এবং কেবল ফিরে আসা $(elem).attr('class').split(/\s+/)তা করে। হতে পারে আমি ভুল করছি, তবে কোনও সংগ্রহের মাধ্যমে পুনরাবৃত্তি করার, সামগ্রীগুলি একটি নতুন সংগ্রহের অনুলিপি করার এবং সেই নতুন সংগ্রহটি ফিরিয়ে দেওয়ার কোনও কারণ আমি দেখতে পাচ্ছি না।
মার্টিজন

-4

আমি জানি এটি একটি পুরানো প্রশ্ন তবে এখনও।

<div id="specId" class="Lorem ipsum dolor_spec sit amet">Hello World!</div>

var className=".dolor_spec" //dynamic

আপনি যদি উপাদান হেরফের করতে চান

$("#specId"+className).addClass('whatever');

আপনি যদি চেক করতে চান তবে উপাদানটির ক্লাস রয়েছে কিনা

 $("#specId"+className).length>0

একাধিক ক্লাস যদি

//if you want to select ONE of the classes
var classNames = ['.dolor_spec','.test','.test2']
$("#specId"+classNames).addClass('whatever');
$("#specId"+classNames).length>0
//if you want to select all of the classes
var result = {className: ""};
classNames.forEach(function(el){this.className+=el;},result);
var searchedElement= $("#specId"+result.className);
searchedElement.addClass('whatever');
searchedElement.length>0

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