se passer d'un SetTimeout dans Jquery

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par sff, 23 Février 2017.

  1. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    531
    J'aime reçus:
    0
    Bonjour,

    je souhaite savoir si cela est possible de se passer du SetTimeout que j'ai été obligé d'appliquer, car sinon lors du clic sur le bouton, le data apparait directement et les effets s'execute ensuite, ce que je ne veut évidement pas avoir. Je souhaite une chronologie comme ceci :

    Clic
    Fadeout du contenu actuel
    Fadein du data

    La chronologie actuelle est comme cela

    Clic
    Affichage du data (pas de fadein)
    Fadeout du data
    Fadein du data

    Code:
    //Form block parameters
    $("#button_parameters_basics").click(function() {
    
    	$("#button_parameters_basics").attr("disabled", true);
    	$('#form_parameters').delay(0).fadeOut(500);
    	
    	setTimeout(function () {
    		$.ajax({
    type: 'POST',
    url: '?mod=parameters_basics',
    data: { 
    referrer: $('#referrer').val(),
    proxy: $('#proxy').val()
    			},
    success: function(data){
    				
    				$('.form').empty().hide().delay(500).fadeIn(500).append(data);
    			}
    		});
    	}, 500);
    	
    	return false;
    });
    Le setTimeout permet de bloquer pendant une demi seconde le data afin que le Fadeout s'execute normalement.

    Y a t'il une autre solution ?

    Merci
     
  2. niap
    niap WRInaute discret
    Inscrit:
    17 Octobre 2009
    Messages:
    138
    J'aime reçus:
    0
    Oui, tu peux ajouter un callback sur la fonction fadeOut. Ca évitera tout tes delay.
    Code:
    $("#monBloc").fadeOut(500, function(){
    // ici place la requette ajax
    // elle sera appellé une fois le fadeOut terminé
    });

    Code:
    $('.form').empty().hide().delay(500).fadeIn(500).append(data);
    
    Plutôt que d'effacer, masquer, attendre, faire un fondu et ajouter les données, tu peux masquer, remplacer les données, faire ton fondu
    Code:
    $('.form').hide().html(data).fadeIn(500);
    
    A testé, j'ai pas touché jQuery depuis quelques temps, mais tu as l'idée.
     
  3. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    531
    J'aime reçus:
    0
    Oui cela fonctionne parfaitement. Je ne connaissais pas le callback, ca risque de me servir, c'est plus propre.

    Merci
     
Chargement...
Similar Threads - passer SetTimeout Jquery Forum Date
WordPress Passer d'une bonne position à une très bonne position Débuter en référencement 18 Juin 2020
Améliorer la vitesse sous Wordpress : passer toutes les pages en article Administration d'un site Web 3 Avril 2020
Passer d'un hébergement mutualisé à serveur dédié Administration d'un site Web 24 Mars 2020
Google Ads : Comment passer le guide de configuration ? AdWords 29 Décembre 2019
Sur quels critères se baser pour passer à un serveur dédié ? Administration d'un site Web 2 Juillet 2019
Passer des 404 spammées en 410 avec htaccess URL Rewriting et .htaccess 18 Juin 2019
Passer mon htaccess de http à https ? URL Rewriting et .htaccess 27 Janvier 2019
Passer mon site en https, galère en vue Développement d'un site Web ou d'une appli mobile 26 Janvier 2019
Conserver des 301 ou les passer en 410 ? Crawl et indexation Google, sitemaps 4 Janvier 2019
Passer une variable en dossier URL Rewriting et .htaccess 19 Novembre 2018
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice