Je ne suis pas un ninja JS donc je demande des conseils ici. Je suivant le scénariojQuery - comment charger du contenu dans un div commun à partir de deux événements differnet?
- chargement de la page et commondiv est caché
- si le bouton utilisateur clique showeditform, je charge EditForm en commondiv et montrer la commondiv
- si le bouton utilisateur clique showeditform et EditForm est visible, retirez-le et cacher commondiv
- si l'utilisateur clique sur le bouton showpasswordform et si le EditForm est visible et je supprimer EditForm et spectacle passwordform
- si le bouton utilisateur clique showpasswordform et si le passwordform est visible, retirez-le et cacher la div commune
- si le bouton utilisateur clique showeditform et si le passwordform est visible et je supprimer passwordform et montrer EditForm
A partir de maintenant, je l'ai mis en place des drapeaux et si elses mais ce ne est pas très bonne façon de le faire. Comment puis-je y parvenir en utilisant un minimum de code jQuery?
Mise à jour: Après ma tentative
$('a.editpo, a.resetpass').click(function(event){
event.preventDefault();
var urlToCall = $(this).attr('href');
var hyperlinkid = '#'+$(this).attr('id');
var targetId = $(this).attr('id').match(/\d+/);
var targetTrDiv = '#poformloadertr_'+targetId;
var targetTdDiv = '#poformloadertd_'+targetId;
var toToggle = $('#resetuserpassform_'+targetId).is(':visible') || $('#account-home-container-'+targetId).is(':visible') ;
console.log(toToggle);
if(toToggle == true || $(targetTdDiv).html()==''){
$.ajax({
url:urlToCall,
success: function(html){
$(targetTdDiv).html(html);
$(targetTrDiv).show();
}
});
}else{
$(targetTrDiv).hide();
$(targetTdDiv).html('');
}
});
Le editpo
et resetpass
sont des classes appliquées sur les liens dans la colonne de la table, à savoir Modifier les informations personnelles et réinitialiser passe, en cliquant ces charger la forme dans un tr>td
. Comme je l'ai dit, je ne suis pas bon à JS et spécialement à jQuery, donc si vous pensez que le code peut être optimisé à un moment donné, n'hésitez pas à le faire. Merci!
avec JQuery vous pouvez également avoir des méthodes dans une chaîne. Ainsi, .fadeOut (300) .html (newHTML) .fadeIn (300) supprimera le contenu sur une période de 300 ms, chargera du nouveau HTML dans le conteneur et restaure le contenu sur une période de 300 ms. – rlemon
voici ma prise http://stackoverflow.com/questions/7110215/jquery-help-in-optimising-refactoring-code – Kumar