2010-07-04 5 views
3

J'essaie de supprimer une classe d'une balise HTML en ajoutant une nouvelle balise et en faisant d'autres choses magiques.Fonctions jQuery

En ce moment, j'ai juste un codage de style de procédure en cours ... dont je sais qu'il y a une autre façon de le faire. Comme créer une fonction dans une autre fonction? Je ne sais pas comment ça s'appelle et parfois quand j'essayais de le faire, ça n'a jamais fonctionné alors je suis tombé sur le type de style de procédure mais je me suis dit que je pourrais poster sur ici et peut-être que quelqu'un peut m'expliquer comment fonctionne jQuery? En ce moment j'ai comme

$(this).removeClass("theClass"); 
$(this).addClass("theClass"); 
$(this).slideDown(); 

Je pense que je peux faire quelque chose comme

$(this).removeClass("theClass", function(){ 
    // other goodness? 
}); 

Merci à tous. Désolé si je n'ai pas de sens.

+0

essayez ceci .. $ (this) .removeClass ("yourclassname"). AddClass ("classnametochange"); – user354625

Répondre

5

Je pense que ce que vous cherchez est enchaîner les - depuis .removeClass retourne un jQuery object lui-même, vous pouvez appeler directement .addClass sur l'objet retourné, comme ceci:

$(this).removeClass("classA").addClass("classB").slideDown();

Certaines animations prennent également des fonctions appelé callback s comme arguments; ces fonctions spécifient les actions à effectuer une fois l'animation terminée. Par exemple:

$(this).fadeOut("slow", function() { 
    // Callback function - called after fade is done 
    alert("fade complete"); 
});
2

Vous pouvez le faire:

$(this).removeClass("theClass").addClass("theNewClass").slideDown(); 

Vous pouvez en savoir plus sur enchaînant here.

2

Cela dépend de ce que vous voulez réaliser. Si vous voulez juste faire ces trois opérations dans l'ordre, vous pouvez utiliser le chaînage comme mentionné ci-dessus. Si vous voulez exécuter certaines des opérations quand slideDown termine son animation, vous pouvez le faire comme ceci:

var that = this; 
$(this).removeClass("theClass").sildeDown(function() { 
    $(that).addClass("theClass"); 
}); 

Il va supprimer la classe de l'élément, faites-le glisser vers le bas et après diapositive est terminé, il ajoutera la classe encore. L'utilisation de la variable that est nécessaire car la fonction anonyme de rappel this peut faire référence à autre chose que votre élément DOM. Espérons que ça aide!