Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Svipla
    Registrato dal
    Dec 2012
    Messaggi
    76

    [jquery] Impossibile cambiare la proprietà css

    Ciao a tutti
    utilizzo l'istruzione load per caricare una pagina che contiene una modal popup. Dato che voglio rendere scrollabile sto cercando di cambiare la proprietà position della popup da absolute a fixed.
    Faccio così:
    $(window).load(function () {
    $('.ui-dialog').css('position','fixed');
    });

    Faccio così perchè dal codice della popup non riesco a capire come modificare questa proprietà.
    Però succede una cosa strana: se visualizzo solo la pagina richiamata da load, la position viene cambia, ma se richiamo con il load non cambia nulla. Perchè?

    default.aspx:
    $(window).load(function () {
    $('#dvPopUp').load('registrati.aspx');
    });

    registrati.aspx:
    $(window).load(function () {
    $('.ui-dialog').css('position', 'fixed');
    });

    Questo è il codice creato dal controllo dialog di jquery:
    <div class="ui-dialog ui-widget ui-widget-content ui-corner-all ui-front no-close ui-draggable ui-resizable" style="position: absolute; height: auto; width: 675px; top: 0px; left: 417px; display: block;" tabindex="-1" role="dialog" aria-describedby="dialog-modal" aria-labelledby="ui-id-1">

  2. #2

    Re: [jquery] Impossibile cambiare la proprietà css

    Originariamente inviato da Svipla

    Faccio così:
    $(window).load(function () {
    $('.ui-dialog').css('position','fixed');
    });

    se visualizzo solo la pagina richiamata da load, la position viene cambia, ma se richiamo con il load non cambia nulla. Perchè?
    Perché applichi la regola CSS al momento del caricamento della pagina che contiene il load, quindi quando la pagina richiamata da load non è ancora presente del DOM.

    In questo caso specifico, modificherei direttamente il file CSS, senza scomodare Javascript.
    codice:
    .ui-dialog{
        position:fixed;
    }
    Ciao

  3. #3
    Utente di HTML.it L'avatar di Svipla
    Registrato dal
    Dec 2012
    Messaggi
    76
    Ciao
    Scusa, ma l'evento load non viene richiamato dopo che tutta la pagina è stata caricata? Perchè allora quando richiamo solo registrati.aspx funziona?

    Ho provato a modificare direttamente il css, ma il position viene ignorato e considera quello che viene aggiunto automaticamente dallo script jquery
    Grazie

  4. #4
    Se usi:
    codice:
    .ui-dialog{
        position:fixed !important;
    }
    risolvi.

    Se vuoi usare jQuery per modificare lo stile, puoi, anzi devi, usare la callback del load:
    codice:
    $(window).load(function () {
        $('#dvPopUp').load('registrati.aspx',function(){
            $('.ui-dialog').css('position','fixed');
        });
    });
    La funzione di callback viene lanciata dopo che il load ha "fatto quello che doveva fare".

    Ciao

  5. #5
    Utente di HTML.it L'avatar di Svipla
    Registrato dal
    Dec 2012
    Messaggi
    76
    Grazie Luca
    Ora funziona

  6. #6
    Prego

    Per rispondere alla tua domanda:
    Originariamente inviato da Svipla
    ...ma l'evento load non viene richiamato dopo che tutta la pagina è stata caricata?
    L'evento $(window).load() scatta quando l'HTML è stato caricato ma non tiene conto delle chiamate asincrone che avvengono successivamente.

    Quindi venivano lanciate in contemporanea (al caricamento della pagina):
    - Il load dell'altra pagina
    - la modifica dello stile
    la modifica dello stile avveniva quando il load dell'altra pagina non era ancora *concluso*, quindi non produceva nessun effetto.

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.