Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    106

    Reload Ajax in conflitto con Jquery

    Salve,
    ho costruito una pagina con delle animazioni con jquery che partono cliccando determinati bottoni , poi grazie ad una funzione in ajax la pagina fa un refresh aggiornando alcuni elementi.

    Ecco : tutti gli elementi nuovi aggiornati da ajax , non supportano alcun effetto di Jquery , seppur il codice viene scritto correttamente..

    i precedenti elementi nella pagina continuano a funzionare , quelli nuovi invece sembra proprio di no ... come se la libreria jquery per questi nuovi elementi non venisse importata o quantomeno attivata..

    sapete dirmi il perchè ??

    questo è il codice ajax che aggiorna i risultati di un form con contenuto variabile...



    Codice PHP:
    function xmlhttpPost(strURL,formname,responsediv,responsemsg) {

        var 
    xmlHttpReq false;

        var 
    self this;

        
    // Xhr per Mozilla/Safari/Ie7

        
    if (window.XMLHttpRequest) {

            
    self.xmlHttpReq = new XMLHttpRequest();

        }

        
    // per tutte le altre versioni di IE

        
    else if (window.ActiveXObject) {

            
    self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");

        }

        
    self.xmlHttpReq.open('POST'strURLtrue);

        
    self.xmlHttpReq.setRequestHeader('Content-Type''application/x-www-form-urlencoded');

        
    self.xmlHttpReq.onreadystatechange = function() {

            if (
    self.xmlHttpReq.readyState == 4) {

                
    // Quando pronta, visualizzo la risposta del form

                
    updatepage(self.xmlHttpReq.responseText,responsediv);

            }

            else{

                
    // In attesa della risposta del form visualizzo il msg di attesa

                
    updatepage(responsemsg,responsediv);



            }

        }

        
    self.xmlHttpReq.send(getquerystring(formname));

    }



    function 
    getquerystring(formname) {

        var 
    form document.forms[formname];

        var 
    qstr "";



        function 
    GetElemValue(namevalue) {

            
    qstr += (qstr.length "&" "")

                + 
    escape(name).replace(/\+/g"%2B") + "="

                
    escape(value value "").replace(/\+/g"%2B");

                
    //+ escape(value ? value : "").replace(/\n/g, "%0D");

        
    }

        

        var 
    elemArray form.elements;

        for (var 
    0elemArray.lengthi++) {

            var 
    element elemArray[i];

            var 
    elemType element.type.toUpperCase();

            var 
    elemName element.name;

            if (
    elemName) {

                if (
    elemType == "TEXT"

                        
    || elemType == "TEXTAREA"

                        
    || elemType == "PASSWORD"

                        
    || elemType == "BUTTON"

                        
    || elemType == "RESET"

                        
    || elemType == "SUBMIT"

                        
    || elemType == "FILE"

                        
    || elemType == "IMAGE"

                        
    || elemType == "HIDDEN")

                    
    GetElemValue(elemNameelement.value);

                else if (
    elemType == "CHECKBOX" && element.checked)

                    
    GetElemValue(elemName

                        
    element.value element.value "On");

                else if (
    elemType == "RADIO" && element.checked)

                    
    GetElemValue(elemNameelement.value);

                else if (
    elemType.indexOf("SELECT") != -1)

                    for (var 
    0element.options.lengthj++) {

                        var 
    option element.options[j];

                        if (
    option.selected)

                            
    GetElemValue(elemName,

                                
    option.value option.value option.text);

                    }

            }

        }

        return 
    qstr;

    }

    function 
    updatepage(str,responsediv){

        
    document.getElementById(responsediv).innerHTML str;



  2. #2
    Gli eventi jquery se il hai lanciati con click(), hover() etc. etc. o anche con bind() valgono per gli elementi presenti al momento del lancio.
    Se vuoi che gli eventi valgano anche per il contenuto che verrà generato in un secondo momento devi usare live()

  3. #3
    beh, non lo supportano perché le funzionalità che attivano gli effetti sono stati inseriti nella pagina DOPO la conclusione dell'evento onload o ondomready, quando hai assegnato agli elementi della pagina gli effetti da eseguire. Devi riapplicare gli effetti sugli elementi della pagina che hai appena inserito.
    I DON'T Double Click!

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    106
    a direi l vero la mia pagina al momento del caricamento genera un bottone

    clicca qui
    <div id="numefunzione"></div>

    e in contemporanea genera

    function nomefunziona() {
    $("nomefunzione") evento jquery }


    quindi e tutto generato al momento...

    nn mi sembra di usare click o altri eventi ...

    cosa dovrei cambiare ??

    ti ringrazio

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    106
    Originariamente inviato da artorius
    beh, non lo supportano perché le funzionalità che attivano gli effetti sono stati inseriti nella pagina DOPO la conclusione dell'evento onload o ondomready, quando hai assegnato agli elementi della pagina gli effetti da eseguire. Devi riapplicare gli effetti sugli elementi della pagina che hai appena inserito.
    e come li riapplico ??

    perchè nella pagina di destinazione del form , da dove aggiorna gli elementi o reimportato la libreria jquery , ma non cambia niente...

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    106
    Originariamente inviato da Senamion
    Gli eventi jquery se il hai lanciati con click(), hover() etc. etc. o anche con bind() valgono per gli elementi presenti al momento del lancio.
    Se vuoi che gli eventi valgano anche per il contenuto che verrà generato in un secondo momento devi usare live()

    o provato a cambiare i div in questo modo..
    Codice PHP:
    <script>
    $(
    "#aprova").live("click", function() {

            $(
    "#divprova").slideToggle("slow");
           });

    </script>

    <style>
    #divprova { display:none; }
    </style>


    <a id="aprova"> clicca qui</a>

    <div id="divprova"> contenuto nascosto </div> 


    però in ogni caso appena faccio un refresh con ajax , i nuovi elementi generati non funzionano

  7. #7
    Elementi con id= aprova in una pagina ce ne può essere solo 1 (per definizione, in quanto è un id), se aggiungi altri elementi devi dargli altri id. Oppure anche senza id li puoi selezionare in altri modi, ad esempio con la classe

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.