Je travaille actuellement sur une page Web héritée qui utilise une tonne de JavaScript, jQuery, JavaScript client Microsoft et d'autres bibliothèques. La ligne du bas - je ne peux pas réécrire la page entière à partir de zéro car l'entreprise ne peut pas le justifier. Alors ... c'est ce que c'est. Quoi qu'il en soit, j'ai besoin de polluer (j'ai vraiment essayé pas trop) l'espace de noms global avec une variable. Il y a les trois options auxquelles je pensais -
Il suffit de stocker/récupérer à l'aide d'une déclaration JavaScript normale - var x = 0;
Utilisez jQuery pour stocker/récupérer la valeur dans une balise DOM - $("body").data("x", 0);
Utilisez un champ de formulaire masqué et définissez/récupérez la valeur avec jQuery - $("whatever").data("x", 0);
Y a-t-il un meilleur moyen? J'ai examiné la pile de code existante et je ne crois pas que la variable puisse être définie dans une fonction.
Vous pouvez créer un espace de noms à l'intérieur de l'objet jQuery, comme suit:
$.mynamespace = {
myVar : "something",
myVar2 : "somethingElse"
};
ou:
$.mynamespace = {};
$.mynamespace.myVar = "something";
$.mynamespace.myVar2 = "somethingElse";
Gardez à l'esprit que toute méthode de plug-in nommée 'mynamespace' sera écrasée. Assurez-vous donc d'utiliser un nom raisonnable.
Pour moi, le meilleur moyen de gérer cette situation est de définir un objet dans l'objet window:
window.my_config =
{
my_var1 : 1,
my_var1 : 2,
my_var1 : 3
};
Cela garderait votre portée nette et nette. Et chaque fois que vous accéderiez au global en utilisant window.my_config
tous ceux qui consultent le code sauront qu’un accès global est en cours.
Vous pouvez créer un hachage dans la portée globale et l'utiliser comme un espace de noms:
MyNamepace={}
MyNamespace.newvar = 'value'
// MyNamespace.newvar => 'value'
Tout en partageant ma pratique avec vous, je créerais un objet global/var dans le fichier JavaScript requis avec un préfixe sensible, comme si je travaillais sur une page où cet objet serait une zone de texte, puis je l'appellerais:
g_TxtMyValue = 'value'; // g_ specifies it to be a global variable, it is one
// of the many conventions used
Si vous avez plusieurs variables globales, vous pouvez également avoir un espace de noms tel 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 sur tout le site, après leur initialisation.
J'espère que ça aide.
Utilisez le trait de soulignement isEmpty()
.
_.isEmpty('')
retournera true
.
Juste un court préavis:
Est-ce que la fancybox fait AJAX (ce qui signifie: si elle est chargée dans un iFrame, vous devriez ajouter "parent" à la méthode close), comme ceci:
parent.$.fancybox.close();