Visualizzazione risultati 1 fino 5 di 5

Discussione: jquery.ajax - script dopo l'esecuzione

  1. #1
    L'avatar di LastWings
    LastWings non è connesso AlterGuru
    Data registrazione
    14-10-2006
    Messaggi
    1,628

    Predefinito jquery.ajax - script dopo l'esecuzione

    Salve,
    mi ritrovo con un piccolo problemino su cui mi sono bloccato, con ajax via jquery.

    Il punto è questo:
    Dopo aver eseguito un'azione via ajax, le funzioni adibite agli altri comandi, non funzionano più.

    Spiego meglio con un esempio

    Pagina di esempio: h**p://lastwings.altervista.org/test/index.php?galleryid=1

    Facendo riferimento alla pagina su indicata, che porto come esempio, ho queste tre icone:

    Attiva / Disattiva
    Fancybox
    Messaggio di conferma

    Cliccando sul pulsante di attivazione e disattivazione, eseguo via ajax le dovute operazioni, tuttavia una volta che l'operazione è conclusa, i pulsanti come Fancybox, e Messaggio di conferma non funzionano più, stessa cosa se clicco sul pulsante col messaggio di conferma e dopo provo ad avviare la fancybox.
    Se dopo l'esecuzione dello script via ajax, faccio ricaricare i vari .js

    Codice HTML:
    <script type="text/javascript" src="themes/default/js/js.js"></script>
    Ovviamente funziona; il problema è che non essendo poche le righe di codice, il risultato è devastante

    http://shared.animesunshine.com/av/firebug.jpg -> (screenshot sullo script effettivo)

    mandando in freeze il browser

    Di seguito il codice Javascript, delle pagina di test
    Codice HTML:
    $(document).ready(function() {
    			
    		   	$('a[rel=ajax]').live('click',function(event){
    				event.preventDefault();
    				$('.section').fadeIn(2000);
    		    	$.get(this.href,{},function(response){
    		    		$('.section').empty();
    		 	   		$('.section').html(response).fadeTo(900,1);
    		    	})	
    		 	})
    		
    		 		
    		 	$(".confirm").easyconfirm({locale: {
    				title: $("#title").html(),
    				text: $("#question").html(),
    				button: ['Annulla','Conferma'],
    				closeText: 'Esci'
    			}});
    		 	$(document).ready(function() {
    				$("a[rel=zoom]").fancybox({
    					'titlePosition'		:	'over',
    					'overlayOpacity'	:	'0.9',
    					'overlayColor'      :   '#4C5977'
    				});
    			});
    		});
    Ho già guardato in giro, senza trovarne la risoluzione.
    - Utilizzo già ".live" al posto di ".click" e ".bind" nelle funzioni.
    - Ho provato racchiudendo tutto lo script dentro una grande funzione e poi richiamandola, dopo l'esecuzione
    - Provato con ".append"

    Il ".load()" per il richiamo dei file .js dopo l'esecuzione via ajax è da escludere.
    Vorrei inoltre evitare di utilizzare un ulteriore libreria e o script per l'esecuzione via ajax, dato che utilizzo jquery per altre parti.

    Per ulteriori informazioni, resto a disposizione.
    Grazie a chi mi aiuterà.
    Ecchi Paradise - Frammenti Perduti - Semplici Parole - Recensioni ed Opinioni

    Non contattatemi privatamente per ricevere supporto, per queste cose esiste il forum pubblico
    .

  2. #2
    Guest

    Predefinito

    Non ancora visto il tuo codice, ma a naso mi viene daa pensare che non è che basta ricaricare le librerie se con ajax vai ad intervenire sugli elementi del DOM interessati dagli altri script. In questo caso devi ri-associare i listener (come ad esempio quello di fancybox), ma solo dopo che gli elementi relativi sono disponibili.

    Ti ripeto, è una ipotesi,non ho ancora visto il codice.

  3. #3
    L'avatar di LastWings
    LastWings non è connesso AlterGuru
    Data registrazione
    14-10-2006
    Messaggi
    1,628

    Predefinito

    Ciao, grazie per la risposta.
    Ho guardato, ma non ne sono venuto a capo, quindi almeno per quanto riguarda la fancybox, ho provato a cercare per farlo eseguire, specificando l'onclick sul link; e cercando ho trovato una soluzione sul link di seguito

    http://stackoverflow.com/questions/8...-using-onclick

    In pratica, ho portato fuori dal $(document).ready, l'inizializzazione della fancybox, e sostituita con il codice suggerito in quella pagina; quindi il js modificato, è diventato come di seguito

    Codice HTML:
    		$(document).ready(function() {
    			
    		   	$('a[rel=ajax]').live('click',function(event){
    				event.preventDefault();
    				$('.section').fadeIn(2000);
    		    	$.get(this.href,{},function(response){
    		    		$('.section').empty();
    		 	   		$('.section').html(response).fadeTo(900,1);
    		    	})	
    		 	})
    		
    		 		
    		 	$(".confirm").easyconfirm({locale: {
    				title: $("#title").html(),
    				text: $("#question").html(),
    				button: ['Annulla','Conferma'],
    				closeText: 'Esci'
    			}});
    		});
    		function fancybox(elem) {
    			elem = $(elem);
    			if (!elem.data("fancybox")) {
    			    elem.fancybox({
    			        'titlePosition'		:	'over',
    					'overlayOpacity'	:	'0.9',
    					'overlayColor'      :   '#4C5977'
    			    });
    			    elem.fancybox().trigger('click');
    			    elem.data("fancybox", true);
    			}
    			return false; 
    		}

    In aggiunta sul link che richiama la fancybox, ho aggiunto

    Codice HTML:
    onclick="return fancybox(this);"
    Diventando da
    Codice HTML:
    <a href="[IMG_FULLSIZE_URL]" title='Visualizza' rel="zoom">
        <img src="[ICON_URL]" class="icon" />
    </a>
    a

    Codice HTML:
    <a href="[IMG_FULLSIZE_URL]" title='Visualizza' rel="zoom" onclick="return fancybox(this);">
        <img src="[ICON_URL]" class="icon" />
    </a>
    Volendo,
    Codice HTML:
    rel="zoom"
    se non utilizzato altrove, può essere eliminato.

    Ora rimane solo il messaggio di conferma eliminazione, che teoricamente dovrei poter risolvere alla stessa maniera. :\


    NB: Prima di avviarmi per questa strada, avevo anche provato ad usare
    Codice HTML:
    $.fancybox.init()
    senza ottenere alcun risultato.
    Ultima modifica di LastWings : 01-01-2012 alle ore 05.40.16
    Ecchi Paradise - Frammenti Perduti - Semplici Parole - Recensioni ed Opinioni

    Non contattatemi privatamente per ricevere supporto, per queste cose esiste il forum pubblico
    .

  4. #4
    L'avatar di soulcanada
    soulcanada non è connesso Utente giovane
    Data registrazione
    12-08-2011
    Messaggi
    75

    Predefinito

    Ciao, ho notato una cosa nel codice js che hai postato inizialmente: usi 2 volte $(document).ready, una dentro l'altra poi.

    Ora non vorrei dire una cavolata ma forse il problema potrebbe essere quella doppia chiamata alla ready; è una supposizione in quanto dovrei avere tutto il codice davanti per poterlo testare.

    Spero di esserti stato utile.

    Ciao ciao...

  5. #5
    L'avatar di LastWings
    LastWings non è connesso AlterGuru
    Data registrazione
    14-10-2006
    Messaggi
    1,628

    Predefinito

    Si, quella l'avevo aggiunta come tentativo( per altro inutile ), di riuscire a risolvere.
    Ecchi Paradise - Frammenti Perduti - Semplici Parole - Recensioni ed Opinioni

    Non contattatemi privatamente per ricevere supporto, per queste cose esiste il forum pubblico
    .

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •