Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    JQuery e Problema di scope

    Un paio di cosette non mi sono molto chiare.

    se uso JQuery, dovrei mettere TUTTO il mio codice javascript dentro a

    codice:
    //Esempio 1
    $(document).ready(function(){ 
    //QUI TUTTO IL CODICE?
    //compresa dichiarazione di variabili globali
    }
    oppure anche per un maggior ordine posso fare

    codice:
    //Esempio 2
    $(document).ready(function(){ 
     function A();
     function B();
    }
    
    function A(){}
    function B(){}
    
    var $global1;
    con la seconda soluzione che e' quella che sto usando ho pero' un problemino di scope. Essendo che $global1 e' undefined all'inizio, e una delle funzioni di inizializzazione nella mia pagina la usa in una closure poi quando effettivamente quella closure viene invocata la variabile e' sempre undefined perche' giustamente mi par di capire la closure viene appunto "chiusa" nel momento in cui e' ritornata. Ma cio' non succederebbe nell'esempio 1. Mi e' chiaro perche' succede in 2 ma non perche' non succede in 1.

    Tutto perche' non mi piace avere tutto il mio codice Javascript all'interno della $(document).ready()...
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  2. #2
    Codice PHP:
    //Esempio 2
    function A(){}
    function 
    B(){}
    var 
    $global1;
    $(
    document).ready(function(){ 
    A();
    B();

    eviterei la globale.

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  3. #3
    Davvero importa l'ordine delle cose? Ovvero la definizione delle funzioni sopra all'utilizzo nella ready()?

    Neanche a me piacciono le variabili globali, in nessun linguaggio. Ma come posso fare una roba del genere (che per la cronaca non fuziona!).

    Codice PHP:
    var content;

    //Sto usando JQuery UI per le tabs.
    function openTab (testo) {
      
    content '

    content '</p>';
      $(
    '#tabs').tabs ('add''#new-tab-id''My new tab title'); //Non c'e' modo di passare il content all'add di
      //tabs() quindi ho pensato a una variabile globale.
    }


    document.ready (function(){
      $(
    '#tabs').tabs ({ add: function (eventui) {$(ui.panel).append (content) }});
      $(
    '#oggetto').click (function(){openTab('bla bla bla')});
    }); 
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  4. #4
    ho risolto!

    Codice PHP:
    //Sto usando JQuery UI per le tabs.
    function openTab (testo) {
      $(
    '<div id="bla-bla-bla"></div>').append ('

    Testo del nuovo tab</p>'
    ).appendTo('#tabs');
      $(
    '#tabs').tabs('add''#bla-bla-bla''Test');
    }


    document.ready (function(){
      $(
    '#tabs').tabs ();
      $(
    '#oggetto').click (function(){openTab('bla bla bla')});
    }); 
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  5. #5
    Originariamente inviato da mxa
    Davvero importa l'ordine delle cose? Ovvero la definizione delle funzioni sopra all'utilizzo nella ready()?

    no ma vuoi mettere come si legge meglio
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  6. #6
    certo che importa l'ordine delle cose, javascript è un linguaggio interpretato quindi esegue a tempo di esecuzione il codice

  7. #7
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Originariamente inviato da maurello
    certo che importa l'ordine delle cose, javascript è un linguaggio interpretato quindi esegue a tempo di esecuzione il codice
    ma le named functions e le variabili istanziate sono soggette ad hoisting, pertanto nel suo caso non risentono del punto in cui vengono definite. quindi potresti benissimo fare

    [code]
    function a() { ... }
    a();
    [code]

    e

    codice:
    a()
    function a() { ... }
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  8. #8
    Originariamente inviato da fcaldera
    ma le named functions e le variabili istanziate sono soggette ad hoisting, pertanto nel suo caso non risentono del punto in cui vengono definite.
    giusto, pardon

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.