224 votes

jQuery si DIV n ' t ai classe « x »

Dans jQuery, j’ai besoin de faire un if instruction pour vérifier si $this ne contient pas la classe « .selected ».

Essentiellement, lorsque cette fonction est exécutée (au survol) je ne veux pas effectuer la s’estompe si la classe « .selected » a été ajoutée à la div, cela signifiera que l’image sera à une opacité totale pour signifier qu’il est sélectionné. Cherché sur Google à pas de chance, même si c’est une simple question de savoir comment utiliser une instruction IF...

383voto

alphadogg Points 6020

Utilisation du « pas» sélecteur.

Par exemple, au lieu de :

``

Essayez :

``

190voto

Russ Cam Points 58168

jQuery a la hasClass() fonction qui retourne true si un élément dans l'ensemble de fractionnement contient la classe spécifiée

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

Jetez un oeil à mon exemple d'utilisation

  • Si vous passez la souris sur un div, il s'efface comme vitesse normale à 100% d'opacité si l' div ne contient pas le "sélectionnées" classe
  • Si vous passez d'un div, il s'estompe à vitesse lente jusqu'à 30% d'opacité si l' div ne contient pas le "sélectionnées" classe
  • En cliquant sur le bouton ajoute "sélectionnées" catégorie de la div rouge. La décoloration les effets ne fonctionnent plus sur le rouge div

Voici le code pour qu'il

<!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>

EDIT:

c'est juste une supposition, mais êtes-vous essayer de réaliser quelque chose comme ça?

  • Les deux divs commencer à 30% d'opacité
  • Le survol d'une div qui s'estompe à 100% d'opacité, planant en dehors des esquives à 30% d'opacité. Effets de fondu seulement travailler sur des éléments qui n'ont pas le "selected" classe
  • En cliquant sur un div ajoute/supprime l' "sélectionnées" classe

jQuery est ici-

$(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>

30voto

robm Points 111

Je pense que l’auteur était à la recherche :

5voto

Andrew Points 30079

Lorsque vous vérifiez si un élément a ou n’a-t-elle pas de classe, assurez-vous que vous n’a pas mis accidentellement un point dans le nom de la classe :

Après un long temps de regarder mon code, j’ai réalisé que j’avais fait cela. Une petite faute de frappe comme ça m’a pris une heure pour comprendre ce que j’avais fait mal. Vérifiez si votre code !

1voto

Jeff Adams Points 61
<pre><code></code><p>Mettre un if à l’intérieur de chaque partie du vol stationnaire vous permettra de changer dynamiquement le select et le vol stationnaire fonctionnera toujours.</p><pre><code></code></pre><p>A titre d’exemple, j’ai également joint un gestionnaire click pour passer de la classe sélectionnée de l’élément cliqué. Puis j’ai le feu l’événement de pointage sur l’élément précédent à faire disparaître.</p></pre>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X