jQuery: নির্দিষ্ট শ্রেণীর নামের সাথে ডিভ রয়েছে কিনা তা পরীক্ষা করুন


235

JQuery ব্যবহার করে আমি প্রোগ্রামগতভাবে divএর মতো একটি গুচ্ছ তৈরি করছি :

<div class="mydivclass" id="myid1">Some Text1</div>
<div class="mydivclass" id="myid2">Some Text2</div>

আমার কোডে অন্য কোথাও এই ডিআইভিগুলি রয়েছে কিনা তা সনাক্ত করতে হবে। ডিভসের জন্য শ্রেণীর নাম একই তবে প্রতিটি ডিভের জন্য আইডি পরিবর্তন হয়। কীভাবে তাদের jQuery ব্যবহার করে সনাক্ত করতে পারেন?

উত্তর:


424

আপনি জিকুয়েরি থেকে এমনভাবে ফিরে আসা প্রথম অবজেক্টটি পরীক্ষা করে এটি সহজ করতে পারেন:

if ($(".mydivclass")[0]){
    // Do something if class exists
} else {
    // Do something if class does not exist
}

এই ক্ষেত্রে যদি প্রথম ( [0]) সূচকে যদি সত্যবাদী মান থাকে তবে ধরে নিই শ্রেণীর উপস্থিতি রয়েছে।

04/10/2013 সম্পাদনা করুন: আমি এখানে একটি জাসস্পিফ টেস্ট কেস তৈরি করেছি ।


ভাল পয়েন্ট, যেভাবেই এটি কেবল একটি সম্পত্তি অনুসন্ধান। আমি চারটি চরিত্র সম্পর্কে চিন্তা করি না, তবে এটি প্রসঙ্গের উপর নির্ভর করে আরও পরিষ্কার হতে পারে ...
টিজে ক্রাউডার

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

1
মজার ব্যাপার হচ্ছে, আপনি একটি নিক্ষেপ মনে হতে পারে :firstসেখানে কর্মক্ষমতা সাহায্য করবে (যদি কর্মক্ষমতা @itgorilla জন্য একটি গুরুত্বপূর্ণ নির্ণায়ক জানি না), কিন্তু কিনা এটা আছে তারতম্য দুর্দান্তভাবে , ব্রাউজার দ্বারা সম্ভবতঃ কারণ এটি নেটিভ বৈশিষ্ট্য পরিবর্তন jQuery করতে ব্যবহার করতে পারেন নির্বাচন. এখানে ডিভ উপস্থিত রয়েছে এমন একটি পরীক্ষার কেস এখানে রয়েছে এবং এটি উপস্থিত নেই
টিজে ক্রাউডার

এবং যদি আমি কোনও কোডটি চালিত করতে না চাই তবে একটি শ্রেণীর উপস্থিতি নেই?
টমাস সেবাস্তিয়ান

1
@ থমাস সেবাস্তিয়ান চেষ্টা করুনif (!$(".mydivclass")[0]){ /* do stuff */ }
শাজ

117

আপনি ব্যবহার করতে পারেন size(), তবে jQuery আপনাকে অন্য ফাংশন কলের ওভারহেড এড়াতে দৈর্ঘ্যটি ব্যবহার করার পরামর্শ দেয়:

$('div.mydivclass').length

তাই:

// since length is zero, it evaluates to false
if ($('div.mydivclass').length) {

http://api.jquery.com/size/

http://api.jquery.com/length/

হালনাগাদ

নির্বাচিত উত্তরটি পারফ টেস্ট ব্যবহার করে তবে এটি কিছুটা ত্রুটিযুক্ত কারণ এটি পারফের অংশ হিসাবে উপাদান নির্বাচনও অন্তর্ভুক্ত করে যা এখানে পরীক্ষা করা হচ্ছে না। এখানে একটি আপডেট পারফ পরীক্ষা:

http://jsperf.com/check-if-div-exists/3

আমার পরীক্ষার প্রথম রানটি দেখায় যে সম্পত্তি পুনরুদ্ধার সূচীকরণের তুলনায় দ্রুততর, যদিও আইএমও এটি বেশ নগণ্য। আমি এখনও আমার হিসাবে দৈর্ঘ্যটি ব্যবহার করতে পছন্দ করি এটি আরও সংযত শর্তের পরিবর্তে কোডের অভিপ্রায়টিকে আরও বেশি বোঝায়।


3
আপনি jsperf.com এ সরঞ্জামটি সরবরাহ করেছেন সেই লিঙ্ক অনুসারে, .lengthবর্তমানে সেরা গড় পারফরম্যান্স উপলব্ধ।
gmeben

একটি চেকের জন্য ক্ষুদ্রতম পারফরম্যান্স প্রভাব সহ আমার প্রয়োজনগুলি সার্ভার করে।
ডেভিড ও'রেগান

77

JQuery ছাড়া:

নেটিভ জাভাস্ক্রিপ্ট সর্বদা দ্রুত হতে চলেছে। এই ক্ষেত্রে: (উদাহরণ)

if (document.querySelector('.mydivclass') !== null) {
    // .. it exists
}

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

var parent = document.querySelector('.parent');

if (parent.querySelector('.child') !== null) {
    // .. it exists as a child
}

বিকল্পভাবে, আপনি .contains()প্যারেন্ট উপাদানটিতে পদ্ধতিটি ব্যবহার করতে পারেন । (উদাহরণস্বরূপ)

var parent = document.querySelector('.parent'),
    child = document.querySelector('.child');

if (parent.contains(child)) {
    // .. it exists as a child
}

.. এবং পরিশেষে, আপনি যদি কোনও প্রদত্ত উপাদানটিতে একটি নির্দিষ্ট শ্রেণি রয়েছে কিনা তা পরীক্ষা করতে চান তবে ব্যবহার করুন:

if (el.classList.contains(className)) {
    // .. el contains the class
}

57
$('div').hasClass('mydivclass')// Returns true if the class exist.

3
সত্য এটি বিকল্প, তবে ব্যয়বহুল। তার আগে উত্তর ব্যবহৃত (পদ্ধতির তুলনায় ধীর হবে লক্ষণীয়ভাবে ধীর, কিছু ব্রাউজার দিকে), এবং একটি অনেক বড় মেমরির প্রভাব হিসাবে ভাল (jQuery এর একটি অ্যারের বিল্ড আপ হয়েছে আছে সব নিয়ে divপৃষ্ঠার উপাদানগুলির মধ্যে, তারপর ফিরে যান এবং তাদের ক্লাস রয়েছে কিনা তা দেখতে তাদের লুপ করুন, সব শেষে অ্যারে ফেলে দিতে হবে)।
টিজে ক্রাউডার 21

3
@tj hasClassএখানে 33% আরও দ্রুত অন্য নির্বাচকগণ দ্রুত। পরীক্ষা করে দেখুন jsperf.com/hasclass00
হুসেইন

1
@ হাসিন: কেবলমাত্র একটি অবাস্তব পরীক্ষামূলক কেস (দুটি divউপাদান) নিয়েই আমি যে বিষয়টিকে হাইলাইট করেছি (অ্যারে তৈরি করা) সেই দিকটিই সরিয়ে দেয় । ডিভ্সের একগুচ্ছ দিয়ে এটি ব্যবহার করে দেখুন: jsperf.com/hasclass00/2 এটি আমার ক্রোমের অনুলিপিটিতে %৩% ধীর, ফায়ারফক্সের অনুলিপিটিতে আমার 43% ধীর, অপেরাতে 98% (!) ধীর। তবে তদুপরি, এটি উপলব্ধি করে যে ডিভগুলির একটি তালিকা তৈরি করা এবং তারপরে এটি অনুসন্ধান করা ধীরে ধীরে সিলেক্টর ইঞ্জিনকে প্রয়োজনীয় সমস্ত তথ্য না দিয়ে দেবে।
টিজে ক্রাউডার

1
@ হাসিন: নোট করুন যে আমি খুব সমান হয়েছি এবং আপনার দাবির প্রতি ভারসাম্যপূর্ণ পাল্টা-প্রমাণ উপস্থাপন করেছি। আমি দুঃখিত যদি আমি কোনও স্নায়ু স্পর্শ করি, যা শেষবারের মতো হয়েছিল বলে মনে হয়েছিল। শুধু শিথিল করুন, এটি কোনও ব্যক্তিগত বিরোধ নয়, এটি প্রযুক্তিগত আলোচনা। স্ট্যাক ওভারফ্লোতে একটি ঘন ত্বক এবং একটি মুক্ত মন কার্যকর।
টিজে ক্রাউডার

1
@ হাসিন: এইচটিএমএল 5 সিএসএস নির্বাচকের অর্থ এটি প্রায় সর্বদা এটি করা সবচেয়ে খারাপতম উপায় হবে। -1 আপনার পোস্টটি কেবল মুছে ফেলার জন্য নয়।
স্টিফান কেন্ডাল

46

Jquery ব্যবহার না করেই এখানে একটি সমাধান

var hasClass = element.classList.contains('class name to search');
// hasClass is boolean
if(hasClass === true)
{
     // Class exists
}

রেফারেন্স লিংক


1
ক্লাসলিস্টটি কেবলমাত্র আইই 10 + তে সমর্থিত: ক্যানিওস / ক্লাসলিস্ট । আপনাকে অবশ্যই একটি পলিফিল github.com/eligrey/classList.js যুক্ত করতে হবে বা আপনার নিজস্ব পদ্ধতি লিখতে হবে
এএফডি


10

divস্পষ্টভাবে উপাদানগুলির জন্য পরীক্ষা করার জন্য :

if( $('div.mydivclass').length ){...}


এটি .mydivclassব্রাউজার এবং jQuery সংস্করণের উপর নির্ভর করে কিছুটা ধীর হতে পারে ।
স্টিফান কেন্ডাল

সত্য, তবে ওপি বিশেষত "jQuery বলেছিল - নির্দিষ্ট শ্রেণীর নামের সাথে ডিভ রয়েছে কিনা তা পরীক্ষা কর " (আমার জোর), তাই আপনি divনির্বাচকটির অংশটি অন্তর্ভুক্ত করার জন্য প্রথম ভোটের জন্য আমার ভোট পান ।
টিজে ক্রাউডার 21

7

সহজ কোডটি নীচে দেওয়া হল:

if ($('.mydivclass').length > 0) {
   //Things to do if class exist
}

পার্টিকুলার আইডির সাথে ডিভটি আড়াল করতে:

if ($('#'+given_id+'.mydivclass').length > 0) {
   //Things to do if class exist
}

3

এখানে কিছু উপায় রয়েছে:

1.  if($("div").hasClass("mydivclass")){
    //Your code

    //It returns true if any div has 'mydivclass' name. It is a based on the class name
    }

2. if($("#myid1").hasClass("mydivclass")){
    //Your code


    //  It returns true if specific div(myid1) has this class "mydivclass" name. 
    //  It is a  based on the specific div id's.
    }           
3. if($("div[class='mydivclass']").length > 0){
    //Your code

   // It returns all the divs whose class name is "mydivclass"
   //  and it's length would be greater than one.
    }

প্রয়োজনীয়তার ভিত্তিতে আমরা যে কোনও একটি অ্যাবোব সংজ্ঞায়িত উপায় ব্যবহার করতে পারি।


2
if ($(".mydivclass").size()){
   // code here
}

size()বর্গ সঙ্গে উপাদানের সংখ্যা এই ক্ষেত্রে - পদ্ধতি ঠিক যে jQuery নির্বাচক নির্বাচন উপাদানের সংখ্যা ফেরৎ mydivclass। যদি এটি 0 প্রদান করে তবে এক্সপ্রেশনটি মিথ্যা, এবং তাই কোনওটিই নেই এবং যদি এটি অন্য কোনও সংখ্যা ফেরত দেয় তবে ডিভগুলি অবশ্যই উপস্থিত থাকবে।


1
lengthসম্পত্তি আছে কেন একটি পদ্ধতি কল ? এছাড়াও, এই শ্রেণীর সাথে যে কোনও উপাদান পরীক্ষা করে , কেবল একটি নয় div। (এখন, ওপি এর অর্থ এটি হতে পারে, এমনকি সে / সে যা বলেছিল তা না হলেও।) স্টিফান কেন্ডালের জবাব দেখুন যা ওপি আসলে যা বলেছিল তা করে (যদিও, আবারও, তারা আপনাকে বোঝাতে পেরেছিল)
টিজে ক্রাউডার 21

1
@ টিজে ক্রাউডার: আচ্ছা, ব্যক্তিগত স্বাদটি সত্যই - আমি কেবল আকার () পদ্ধতিটি অনুভব করি - কেন এটি ব্যবহার করবেন না। কোনও ক্রিয়াকলাপে কল করার অতিরিক্ত ওভারহেড (আপনি যদি এটি একটি লুপে 1000 বার করেন না) তবে খুব কম, আমি কোডে কিছুটা স্পষ্টতার জন্য যেতে চাই rity আপনার দ্বিতীয় পয়েন্টে - হ্যাঁ, আমি আমার মূল উত্তরটি পরিবর্তনের জন্য পরিবর্তন করেছি div, দুটি কারণে: 1) নির্বাচক এই বিষয়টির সাথে আবদ্ধ নয় যে ওপি কোনও divউপাদান ব্যবহার করে (এটি ভবিষ্যতে পরিবর্তন হতে পারে), এবং 2) বেশিরভাগ ব্রাউজার এবং jQuery এর সংস্করণ, আফাইক, এটি দ্রুত হওয়া উচিত।
হারমান শ্যাফাফ

"আমি কেবল আকার () পদ্ধতিটি অনুভব করছি - কেন এটি ব্যবহার করবেন না" উম, ঠিক আছে। lengthসম্পত্তি, সেখানে কেন এটিকে ব্যবহার করবেন? তবে এটি যদি আপনার পছন্দ হয় তবে ন্যায্য n অন্যদিকে, আমি জানতাম না যে আপনি এটি সম্পাদনা করেছেন। যদি আমি এটি করতে যাচ্ছিলাম তবে আমি এটি রেখে দিয়েছি (আবারও, তিনি স্পষ্টতই বলেছিলেন "... যদি ডিভ সাথে ..." (আমার জোর)) এবং পরে অতিরিক্ত উল্লেখ করেছেন যে এটি যদি তাতে কিছু আসে যায় না তবে এটি ছিল divবা না, আপনি সেই অংশটি খাঁজতে পারেন Butকিন্তু যাই হোক না কেন :
টিজে ক্রাউডার

@ টিজে ক্রাউডার: হ্যাঁ, আমি মনে করি আমরা এটাকে উড়িয়ে দিচ্ছি।
হারমান শ্যাফাফ

@ টিজে ক্রাউডার: তবে আমার প্রতিরক্ষা হিসাবে, যদিও এটি আলোচনার জন্য জায়গা নয়: আমি মনে করি যে এটি size()কোনও স্পেসিফিক সিলেক্টারের উপাদানগুলির সংখ্যা গণনা করছেন, কেবল কোনও পুরানো অ্যারে নয়, এটি পরিষ্কার করার জন্য এই পদ্ধতিটি রয়েছে। তবে আবার, এটি আমার পছন্দ মাত্র।
হারমান শ্যাফাফ

2

ডিভ নির্দিষ্ট শ্রেণীর সাথে উপস্থিত কিনা তা পরীক্ষা করুন

if ($(".mydivclass").length > 0) //it exists 
{

}

2
if($(".myClass")[0] != undefined){
  // it exists
}else{
  // does not exist
}

2
এই বিদ্যমান উত্তরের সাথে প্রায় অভিন্ন বলে মনে হচ্ছে ।
পাং

হ্যাঁ এটি করে ... তবে আমি উত্তরটি চেষ্টা করেছিলাম এবং এটি কার্যকর হয়নি। আমি যখন 'অপরিজ্ঞাপিত' এর সাথে তুলনা যুক্ত করেছি তখন মনে হয়েছিল এটি পুরোপুরি কার্যকর।
সিঁড়ি

2
var x = document.getElementsByClassName("class name");
if (x[0]) {
alert('has');
} else {
alert('no has');
}

যদিও এই কোডটি প্রশ্নের উত্তর দিতে পারে, কেন এবং / অথবা এই কোডটির প্রশ্নের উত্তর কীভাবে তার দীর্ঘমেয়াদী মানকে উন্নত করে তা সম্পর্কিত অতিরিক্ত প্রসঙ্গ সরবরাহ করে।
বিশাল ছোটোয়ানি

2

জ্যাকুরিতে আপনি এটি ব্যবহার করতে পারেন।

if ($(".className")[0]){

   // Do something if class exists

} else {

// Do something if class does not exist

}

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

if (document.getElementsByClassName("className").length > 0) {

// Do something if class exists

}else{

    // Do something if class does not exist

}

2

জাভাস্ক্রিপ্টে চেক ক্লাসের (হ্যাশ ক্লাস) জন্য খুব নমুনা সমাধান এখানে রয়েছে:

const mydivclass = document.querySelector('.mydivclass');
// if 'hasClass' is exist on 'mydivclass'
if(mydivclass.classList.contains('hasClass')) {
   // do something if 'hasClass' is exist.
}

1

জাভাস্ক্রিপ্টে সেরা উপায়:

if (document.getElementsByClassName("search-box").length > 0) {
// do something
}


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