2011-04-29 5 views
1

J'essaye de "globaliser" mes variables pour les utiliser dans des fonctions multi-fonctions mais sans résultat. Où ai-je tort? merci beaucoup!jQuery variables globales

Voici le code:

var my_sidebar_clicked = $('#dash #sidebar ul#main_menu li'); 
var my_dash_main_content = $('#dash > #main_content'); 


function mainmenu_selection() { 

      //var my_sidebar_clicked = $('#dash #sidebar ul#main_menu li'); 
      //var my_dash_main_content = $('#dash #main_content'); 

      my_sidebar_clicked.children().click(function() { 
       var el = $(this); 
       var mylink = el.attr('href'); 

       $('#dash #sidebar ul#main_menu li a').removeClass('current'); 
       $(this).addClass('current'); 

       //$('#dash #main_content').load("ajax/" + mylink); 

       my_dash_main_content.html('<img class="loader_img" src="common/img/ajax-loader.gif" />'); 
       my_dash_main_content + $(".loader_img").fadeIn(200); 
       my_dash_main_content.load("ajax/" + mylink, function(response, status, xhr) { 
         if (status == "error") { 
           var msg = "Oops... sembra esserci un problema, ti preghiamo di riprovare "; 
           my_dash_main_content.html("<h4 class='error_msg'>" + msg + "</h4>"/* + xhr.status + " " + xhr.statusText*/); 
         } 
       }); 

       return false; 
      }); 
} 
+1

peut-on voir le html? Etes-vous sûr que les sélecteurs sont corrects? – Neal

+0

L'une des choses que vous sélectionnez est-elle mise à jour dynamiquement? Si tel est le cas, les valeurs de sélecteur précédentes pourraient être obsolètes. Aussi ces sélecteurs semblent inutilement compliqués, en supposant que vous n'avez pas incorrectement ID dupliqués, le 1er est équivalent à '#main_menu li' et le 2ème est équivalent à' # main_content' –

Répondre

1

Prendre une conjecture sauvage, en plaçant les initialisations variables à l'intérieur d'un bloc exécuté après que le document est prêt fixerait le problème.

Essayez plutôt des deux premières lignes:

$(function() { 
    window.my_sidebar_clicked = $('#dash #sidebar ul#main_menu li'); 
    window.my_dash_main_content = $('#dash > #main_content'); 
}); 
+1

Je conseillerais _not_ polluer la portée globale, et juste déclarer les variables (et tout le reste) à l'intérieur du rappel de document prêt. –

+0

@MattBall: Si je lis correctement la question, l'OP a besoin que ces variables soient visibles à partir de plusieurs fichiers JS. Donc, les mettre dans une fonction ne serait pas une option. – Jon

+0

Plusieurs fonctions! = Plusieurs fichiers. –