jQuery যদি ডিআইভি ক্লাস "এক্স" না থাকে


211

JQuery এ আমার একটি if স্টেটমেন্ট করা দরকার তা দেখার জন্য $ এটিতে '। নির্বাচিত' ক্লাসটি নেই।

$(".thumbs").hover(function(){

$(this).stop().fadeTo("normal", 1.0);
},function(){
$(this).stop().fadeTo("slow", 0.3);

});

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

উত্তর:


359

"না " নির্বাচকটি ব্যবহার করুন ।

উদাহরণস্বরূপ, পরিবর্তে:

$(".thumbs").hover()

চেষ্টা করে দেখুন:

$(".thumbs:not(.selected)").hover()


এ সম্পর্কে চিন্তাভাবনা করে, যদি ওপি দলিলের পরে ডিভের জন্য ক্লাসটি যুক্ত করে থাকে ready তবে আমি মনে করি না আপনার বাক্য
গঠনটি

@ জুক 1: আচ্ছা, আপনার স্নিপেট থেকে, আপনি ক্লাস 'থাম্ব' সহ সমস্ত উপাদান নিয়েছেন এবং প্রতিটিটির উপর একটি হোভার () করেন। আপনি কি বলছেন যে আপনি কেবল একটি উপাদানকে ঘুরিয়ে রাখতে চান? এটি একটি উপাদান কি? আমি দ্বিধান্বিত.
বর্ণমালা

@ রুস: সঠিক আপনি যদি উপরেরটি ব্যবহার করেন তবে এটি কার্যকর হওয়ার সময় বর্তমানে ডিওমে থাকা সমস্ত এলিম লাগবে এবং 'থাম্ব' শ্রেণি এবং 'নির্বাচিত' নয় এমন শ্রেণীর ক্ষেত্রে এটি নেমে যাবে ()।
বর্ণমালা

আপনার যদি কোনও কারণে নির্বাচকের বাইরে এটি করার দরকার হয় তবে আপনি .not( ".selected" )এটি ব্যবহার করতে পারেন এবং এটি একই কাজ করবে। জমকালো স্টাফ
জোশুয়া পিন্টার

180

জিকুয়েরিতে হ্যাশক্লাস () ফাংশন রয়েছে যা মোড়কে থাকা সেটের কোনও উপাদান নির্দিষ্ট শ্রেণিভুক্ত থাকলে সত্য হয়

if (!$(this).hasClass("selected")) {
    //do stuff
}

আমার ব্যবহারের উদাহরণটি একবার দেখুন

  • যদি আপনি একটি ডিভের উপরে ঘোরাফেরা করেন তবে ডিভটিতে 'নির্বাচিত' শ্রেণিটি না থাকলে এটি 100% অস্বচ্ছতার সাথে স্বাভাবিক গতি হিসাবে ম্লান হয়ে যায়
  • যদি আপনি একটি ডিভের বাইরে চলে যান তবে ডিভটিতে 'নির্বাচিত' শ্রেণিটি না থাকলে ধীর গতিতে 30% অস্বচ্ছ হয়ে যায়
  • বোতামটি ক্লিক করা হলে লাল ডিভের জন্য 'নির্বাচিত' শ্রেণি যুক্ত হয়। বিবর্ণ প্রভাব আর রেড ডিভের জন্য আর কাজ করে না

এটির জন্য কোডটি এখানে

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
<title>Sandbox</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<style type="text/css" media="screen">
body { background-color: #FFF; font: 16px Helvetica, Arial; color: #000; }
</style>


<!-- jQuery code here -->
<script type="text/javascript">
$(function() {

$('#myButton').click(function(e) {
$('#div2').addClass('selected');
});

$('.thumbs').bind('click',function(e) { alert('You clicked ' + e.target.id ); } );

$('.thumbs').hover(fadeItIn, fadeItOut);


});

function fadeItIn(e) {
if (!$(e.target).hasClass('selected')) 
 { 
    $(e.target).fadeTo('normal', 1.0); 
  } 
}

function fadeItOut(e) { 
  if (!$(e.target).hasClass('selected'))
  { 
    $(e.target).fadeTo('slow', 0.3); 
 } 
}
</script>


</head>
<body>
<div id="div1" class="thumbs" style=" background-color: #0f0; margin: 10px; padding: 10px; width: 100px; height: 50px; clear: both;"> 
One div with a thumbs class
</div>
<div id="div2" class="thumbs" style=" background-color: #f00; margin: 10px; padding: 10px; width: 100px; height: 50px; clear: both;">
Another one with a thumbs class
</div>
<input type="button" id="myButton" value="add 'selected' class to red div" />
</body>
</html>

সম্পাদনা করুন:

এটি কেবল অনুমান, তবে আপনি কি এই জাতীয় কিছু অর্জনের চেষ্টা করছেন ?

  • উভয় ডিভ 30% অস্বচ্ছতা থেকে শুরু করে
  • একটি ডিভের উপর 100% অস্বচ্ছতার উপর ঝাঁকুনির সাথে 30% অস্বচ্ছতা ফিরে আসে ades বিবর্ণ প্রভাবগুলি কেবলমাত্র সেই উপাদানগুলিতে কাজ করে যেগুলির 'নির্বাচিত' শ্রেণি নেই
  • একটি ডিভ ক্লিক করলে 'নির্বাচিত' শ্রেণি যুক্ত / সরানো হয়

jQuery কোড এখানে-

$(function() {

$('.thumbs').bind('click',function(e) { $(e.target).toggleClass('selected'); } );
$('.thumbs').hover(fadeItIn, fadeItOut);
$('.thumbs').css('opacity', 0.3);

});

function fadeItIn(e) {
if (!$(e.target).hasClass('selected')) 
 { 
    $(e.target).fadeTo('normal', 1.0); 
  } 
}

function fadeItOut(e) { 
  if (!$(e.target).hasClass('selected'))
  { 
    $(e.target).fadeTo('slow', 0.3); 
 } 
}

<div id="div1" class="thumbs" style=" background-color: #0f0; margin: 10px; padding: 10px; width: 100px; height: 50px; clear: both; cursor:pointer;"> 
One div with a thumbs class
</div>
<div id="div2" class="thumbs" style=" background-color: #f00; margin: 10px; padding: 10px; width: 100px; height: 50px; clear: both; cursor:pointer;">
Another one with a thumbs class
</div>

কোনও কারণে কাজ করে না :( $ ("। থাম্বস") h fadeTo ("সাধারণ", 1.0);}, ফাংশন () {$ (এটি)। স্টপ () যোগ হয়েছে
zuk1

hasClass প্রয়োজন? hasClass ('নির্বাচিত') এর পরিবর্তে hasClass ('। নির্বাচিত')
bendewey

আপনি যদি "। নির্বাচিত" এর পরিবর্তে "নির্বাচিত" ব্যবহার করেন তবে রাশ উদাহরণ ব্যবহার করতে পারে?
বর্ণমালা

ক্ষমাপ্রার্থী, না করা মানে না। সেখানে. এখনই আপডেট হয়েছে
রাশ ক্যাম

কোডটি কাজ করে দেখানোর জন্য, আমি আমার উত্তরে কয়েকটি উদাহরণ যুক্ত করেছি
রাশ ক্যাম

28

আমি মনে করি লেখক সন্ধান করেছিলেন:

$(this).not('.selected')

1
এটি কাজ করবে বলে আশা করছিল না। এমনকি $ ("। শ্রেণি 1") এর মতো কাজ করে। ("। শ্রেণি 2") যা আমার ঠিক পরে ছিল! ধন্যবাদ!
kravits88

3
এটি কাজ করে, তবে এটি লক্ষণীয় যে এটি বুলিয়ান হিসাবে কাজ করে না, কারণ এটি অ্যারে দেয়। খালি অ্যারেগুলি জাভাস্ক্রিপ্টে "সত্যবাদী"। আপনি $(this).not('.selected').lengthযদি সত্যিই চান তবে আপনি বুলিয়ান হিসাবে ব্যবহার করতে পারেন , তবে এটি সামান্য ভারবস।
জো মাফেই

5

যখন আপনি পরীক্ষা করছেন যে কোনও উপাদানটির ক্লাস রয়েছে বা নেই, তখন নিশ্চিত হয়ে নিন যে আপনি দুর্ঘটনাক্রমে ক্লাসের নামে কোনও বিন্দু রাখেনি:

<div class="className"></div>

$('div').hasClass('className');
$('div').hasClass('.className'); #will not work!!!!

আমার কোডটি দেখার জন্য দীর্ঘ সময় পরে আমি বুঝতে পেরেছি যে আমি এটি করেছি। এর মতো ছোট্ট একটি টাইপো আমি কী ভুল করেছি তা নির্ধারণ করতে এক ঘন্টা সময় নিয়েছিল। আপনার কোড পরীক্ষা করুন!


1
$(".thumbs").hover(
    function(){
        if (!$(this).hasClass("selected")) {
            $(this).stop().fadeTo("normal", 1.0);
        }
    },
    function(){
        if (!$(this).hasClass("selected")) {
            $(this).stop().fadeTo("slow", 0.3); 
        }           
    }
);

হোভারের প্রতিটি অংশের ভিতরে একটি রাখলে আপনি নির্বাচিত শ্রেণিকে পরিবর্তনশীল পরিবর্তন করতে পারবেন এবং হোভারটি এখনও কাজ করবে।

$(".thumbs").click(function() {
    $(".thumbs").each(function () {
        if ($(this).hasClass("selected")) {
            $(this).removeClass("selected");
            $(this).hover();
        }
    });                 
    $(this).addClass("selected");                   
});

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


0

আপনি ট্যাবগুলির মতো আইটেমগুলির মধ্যে টগল করতে অ্যাডক্লাস এবং সরানক্লাস পদ্ধতিগুলিও ব্যবহার করতে পারেন।

যেমন

if($(element).hasClass("selected"))
   $(element).removeClass("selected");

কেন শুধু টগলক্লাস () ব্যবহার করবেন না?
রুশ ক্যাম

1
কারণ উপাদান অন্যান্য ক্লাস থাকতে পারে।
তাওয়ানি

0

ইভেন্টের অভ্যন্তরে যদি কোনও ব্যবহার করার পরিবর্তে, নির্বাচিত শ্রেণি প্রয়োগ করা হয় তখন আপনি ইভেন্টটি বন্ধ করে দিন? আমি অনুমান করছি যে আপনি কোথাও আপনার কোডের অভ্যন্তরে ক্লাস যুক্ত করেছেন, সুতরাং ইভেন্টটি আনবাইন্ডিংয়ের মতো দেখাবে:

$(element).addClass( 'selected' ).unbind( 'hover' );

একমাত্র ক্ষতিটি হ'ল আপনি যদি নির্বাচিত শ্রেণিকে উপাদান থেকে কখনও সরিয়ে ফেলেন তবে আপনাকে আবার এটিকে হোভার ইভেন্টে সাবস্ক্রাইব করতে হবে।

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