2013-09-29 1 views
1

J'ai un script qui fait disparaître mon div et se fondre dans un autre div. Le code fonctionne mais j'ai 10 divs pour lesquels je veux travailler et pour l'instant cela ne fonctionne que pour la première div dans l'ordre.Script ne fonctionnant que pour un seul sur dix

$('#content').click(function(e){  
$('#content').fadeOut('slow', function(){ 
    $('#backside').fadeIn('slow'); 
}); 
}); 

$('#backside').click(function(e){  
$('#backside').fadeOut('slow', function(){ 
    $(' #content').fadeIn('slow'); 
}); 
}); 

http://jsfiddle.net/3XwZv/981/

+2

ID doivent être uniques, vous peut trouver le mot-clé ['this'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this) utile. – undefined

Répondre

2

Utilisez .prev() et .next() ainsi que des cours (id s doivent être uniques) pour obtenir l'effet désiré:

$('.content').click(function (e) { 
    $(this).fadeOut('slow', function() { 
     $(this).next().fadeIn('slow'); 
    }); 
}); 

$('.backside').click(function (e) { 
    $(this).fadeOut('slow', function() { 
     $(this).prev().fadeIn('slow'); 
    }); 
}); 

Ici, il travaille: http://jsfiddle.net/3XwZv/983/

+1

Oui, c'est la bonne réponse. – undefined

+0

OUI! ÇA A MARCHÉ! Merci beaucoup! – mylirolponi

+0

@mylirolponi - pas de problème! Les deux '.next()' et '.prev()' obtiennent le frère ** directement ** devant ou derrière l'élément donc gardez cela à l'esprit si vous changez la structure de votre HTML. – Joe

3

Ceci est parce que vous avez utilisé id comme un sélecteur qui doit être unique. Essayez avec le class si vous voulez obtenir le résultat attendu.

$('.content').click(function(e){  
$(this).fadeOut('slow', function(){ 
    $(this).next('.backside').fadeIn('slow'); 
}); 
}); 

Et changer le balisage pour définir ces classes (contenu & backside) sur leurs éléments respectifs.

<div class="content"></div> 
+0

Ceci est un parfait exemple de ce que les classes devraient être utilisées. Je ne suis pas sûr que vous auriez à dire '$ ('. Content'). FadeOut' vous pouvez dire' $ (this) .fadeOut' car $ (this) a maintenant le contexte du gestionnaire d'événements parent. – edhedges

+0

@edhedges oui bien sûr que vous écrivez. J'ai fait cette correction aussi bien :) :) – Sachin

+0

Maintenant, tous les divs se fanent en même temps. Je veux qu'il soit unique pour chacun d'entre eux donc je suppose que je dois ajouter quelque chose au script pour mettre des valeurs pour chaque div? – mylirolponi

Questions connexes