80 votes

Comment stocker une valeur globale (pas nécessairement une variable globale) en jQuery ?

Je travaille actuellement sur un héritage de la page web qui utilise une tonne de JavaScript, jQuery, Microsoft client JavaScript, et d'autres bibliothèques. La ligne de fond - je ne peux pas réécrire l'intégralité de la page à partir de zéro tant que l'entreprise ne peut pas la justifier. Donc... c'est ce qu'il est. De toute façon, j'ai besoin de polluer (j'ai vraiment essayé de ne pas trop) l'espace de noms global avec une variable. Il y a trois options, je pensais à l' -

  1. Juste stocker/récupérer à l'aide de JavaScript normale de déclaration - var x = 0;

  2. Utilisation de jQuery pour stocker/récupérer la valeur dans un DOM tag - $("body").data("x", 0);

  3. L'utilisation d'un champ de formulaire masqué, et set/récupérer la valeur avec jQuery - $("whatever").data("x", 0);

Est-il un meilleur moyen? J'ai regardé des tas de code, et je ne crois pas que la variable peut être portée dans une fonction.

100voto

karim79 Points 178055

Vous pouvez créer un espace de noms à l’intérieur de l’objet jQuery, comme suit :

ou :

Gardez à l’esprit, toute méthode de plugin nommé « mynamespace » est écrasées alors n’oubliez pas d’utiliser un nom judicieux.

39voto

ovais.tariq Points 1965

Pour moi la meilleure façon de gérer cette situation consiste à définir un objet dans l’objet window :

Cela garderait votre lunette ordonné et propre. Et chaque fois que vous accédez à l’aide mondiale `` tous ceux qui cherchent le code sauriez que global est accédé.

6voto

Pedro Morte Rolo Points 5171

Vous pouvez créer un hachage dans la portée globale et utilisez-le comme un espace de noms :

2voto

Umair Points 1194

Juste partager ma pratique avec vous, je voudrais faire un objet global/var dans le fichier JavaScript avec un sensible préfixe, comme si je travaille sur une page où cet objet sera une zone de texte, puis je voudrais nommer:

g_TxtMyValue = 'value';    // g_ specifies it to be a global variable, it is one
                           // of the many conventions used

Si vous avez plus d'une variable globale, vous pouvez également avoir un espace de noms tels que:

my_txt = {};  // For a real site I would use a prefix relative to the project
              // name instead of "my".

my_txt.testValueOne = 'Value one';
my_txt.testValueOne = 'Value two';

Ces variables seront disponibles dans le site web, après qu'ils ont été initialisés.

J'espère que cette aide.

0voto

Moriz Points 1

Juste un court préavis : c’est la fancybox est AJAX (ce qui signifie qu’il charge dans un iFrame, vous devez ajouter « parent » à la méthode close, comme ceci :``

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X