কোনও উপাদানটির নির্দিষ্ট শ্রেণি নেই কিনা তা কীভাবে পরীক্ষা করবেন?


232

ক্লাস না থাকলে কীভাবে চেক করব। উদাহরণস্বরূপ, আমি জানি যে এটিতে "পরীক্ষা" ক্লাস আছে কিনা তা পরীক্ষা করে দেখতে হয়, তবে এটিতে "পরীক্ষা" ক্লাস নেই কিনা তা আমি কীভাবে চেক করব?

if($(this).hasClass("test")){
}

উত্তর:


484
if (!$(this).hasClass("test")) {

34
টিমটিউটিডিআই শিরাতে, এখানে একটি ভয়াবহ সমাধান রয়েছে: if($(this).is(":not(.test)"))> :)
ফ্রোগজ

6
TIMTOWTDIBSCINABTE
ফিজিক্স

25
যদি কারও অবাক হয়ে যায়: এটি করার একাধিক উপায় আছে তবে কখনও কখনও ধারাবাহিকতা খারাপ কাজ নয়।
ক্যাপ্টেন হাইপারটেক্সট

145

sdleihssirhc এর উত্তর অবশ্যই প্রশ্নে ক্ষেত্রে জন্য সঠিক এক, কিন্তু মাত্র একটি রেফারেন্স হিসেবে আপনি যে উপাদান একটি নির্দিষ্ট শ্রেণীর হবে না নির্বাচন করতে হবে, আপনি ব্যবহার করতে পারেন না নির্বাচক:

// select all divs that don't have class test
$( 'div' ).not( ".test" );
$( 'div:not(.test)' );  // <-- alternative 

8
আপনার উত্তরটি সেরা IM যদি sdleihssirhc এর উত্তরটি সঠিক থাকে তবে jQuery এর সাথে এই প্রশ্নের কোনও সম্পর্ক নেই এবং 'কিছু শর্ত দেওয়া হলে, আমি কীভাবে পরীক্ষা করব যে শর্তটি জাভাস্ক্রিপ্টে সত্য নয়' সে হিসাবে আরও ভালভাবে প্রণয়ন করা যায়। আমরা jQuery এর সাথে যা চাই তা DOM উপাদানগুলির পুরো সংগ্রহগুলিতে যেমন সহজ আমরা একক বস্তুগুলিতে পারি operate আপনার উত্তরটি কেবল সেই সমাধান সরবরাহ করে। +1
স্টিজন ডি উইট

1
@ বায়ার্নায়সগুর মূল প্রশ্নের প্রসঙ্গে পোস্টারটি পরীক্ষা করতে চেয়েছিল যে কোনও নির্দিষ্ট উপাদানটির ক্লাস না থাকলে। এই কোডটি এমন সমস্ত উপাদান নির্বাচন করে যা ক্লাসে নেই, তাই এটি পোস্টারের সমস্যার সমাধান করবে না। আমি কেন প্রথম স্থানে পোস্ট করেছি তা মনে নেই।
জেজেজে

14

"Xcz" শ্রেণিবিহীন, "abc" শ্রেণিযুক্ত উপাদান (বা উপাদানগুলির গোষ্ঠী) নির্বাচন করুন:

    $('.abc:not(".xyz")')

নিয়মিত সিএসএস নির্বাচন করার সময় আপনি ব্যবহার করতে পারেন .abc:not(.xyz)


6

.not () পদ্ধতিটি ব্যবহার করুন এবং একটি বৈশিষ্ট্যের জন্য পরীক্ষা করুন:

$('p').not('[class]');

এটি এখানে দেখুন: http://jsfiddle.net/AWb79/


8
এটি সম্পূর্ণ ভুল। বন্ধনী ক্লাসের জন্য নয় তবে বৈশিষ্ট্য সনাক্তকারী নির্বাচকদের জন্য ব্যবহৃত হয়।
মিস্টারপার্কার

1
আসলে এটি পুরোপুরি সঠিক। '[শ্রেনী]' সঠিকভাবে একটি ক্লাস থাকার বৈশিষ্ট্যটি চিহ্নিত করছে (না)।
দেবোরাহ

@ মিস্টারপার্কার ক্লাসগুলি বৈশিষ্ট্য।
ম্যাথু সিরা

এই চেক যদি অ্যাট্রিবিউট বর্তমান, ঘটনা না হলে একটি উপাদান একটি নির্দিষ্ট শ্রেণীর হয়েছে, বর্গ মান হিসাবে
মার্ক

6

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

<div id="div1" class="myClass">there is a class</div>
<div id="div2"> there is no class2 </div>

$(document).ready(function(){
    $("#div2").not('.myClass');  // do not have `myClass` class.
});

এই উত্তরটি পৃষ্ঠায় কোনও মূল্য যুক্ত করে না, এটি পোস্ট করা হয়েছিল 7 বছর বয়সের। দয়া করে কখনও কোড-পোস্ট এবং ডুপ্লিকেট সামগ্রী নন post
মিকম্যাকুসা

0

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

যদি অভিভাবক উপাদানগুলিতে নির্দিষ্ট সন্তানের উপাদান না থাকে; jQuery এর


0

পরে এই y বছর পড়ার পরে এবং ভেবেছিলাম আমি এটিও হ্যাক করব, টিমটোডিডি শিরাতেও : ... ডি, আশা করি এটি 'জেএস শিষ্টাচার' ভুল নয়।

আমি সাধারণত কন্ডিশনের সাথে একটি ভার সেট আপ করি এবং তারপরে পরে তা উল্লেখ করি..আই;

// var set up globally OR locally depending on your requirements
var hC;

function(el) {
  var $this = el;
  hC = $this.hasClass("test");

  // use the variable in the conditional statement
  if (!hC) {
    //
  }
}

যদিও আমার উল্লেখ করা উচিত যে আমি এটি করি কারণ আমি মূলত শর্তসাপেক্ষ টেরিনারি অপারেটরটি ব্যবহার করি এবং পরিষ্কার কোড চাই। সুতরাং এক্ষেত্রে আমার যা কিছু ছিল তা হ'ল:

hC ? '' : foo(x, n) ;
   // OR -----------
!hC ? foo(x, n) : '' ;

...এর পরিবর্তে:

$this.hasClass("test") ? '' : foo(x, n) ;
   // OR -----------
(!$this.hasClass("test")) ? foo(x, n) : '' ;

0

কেন জানি না, তবে গৃহীত উত্তরটি আমার পক্ষে কার্যকর হয়নি। পরিবর্তে এটি কাজ করেছে:

if ($(this).hasClass("test") !== false) {}

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