L'appel d'une fonction à l'intérieur de jQuery à partir de portée mondiale
J'ai vu plusieurs questions sur les problèmes liés à cela, mais aucun de ceux qui ont fourni une réponse définitive.
Dans ce JavaScript:
function global_function() {
a_jquery_function();
}
$(function () {
var a_jquery_function = function () {
do_something();
};
});
Puis-je faire quelque chose pour que la fonction globale peut appeler la fonction jQuery? De toute évidence, il ne peut pas être fait de la façon dont je le fais là, mais je me demandais si il pourrait être fait à l'aide de jQuery.fn
ou à l'aide des événements personnalisés. Par exemple:
function global_function() {
$.fn.a_jquery_function();
}
$(function () {
$.fn.a_jquery_function() = function () {
do_something();
};
});
ou
function global_function() {
trigger_event('my_event', args);
}
$(function () {
$(document).on('my_event', function(args) {
do_something();
});
});
J'ai essayé le premier, mais j'ai couru dans des problèmes. Si je sais que l'un des deux est possible, je vais travailler plus. Mais si quelqu'un ici sait que ce n'est pas possible de le faire, je suppose que je vais devoir y renoncer.
Grâce.
Merci pour l'edit, tymeJV. J'ai relu le post, mais évidemment pas le titre. Oups.
Pourquoi en serait-il pas possible de faire les deux? Pensez-vous qu'il y a inflexible lois de programmation physique qui l'empêche? La première instance est vraiment juste de créer une variable globale depuis vous attachez une propriété à un objet accessible à partir de la variable globale
$
.Pourquoi avez-vous placer entre crochets à la fin de la variable nom?
J'ai besoin d'utiliser le YouTube IFrame API qui nécessite des fonctions déclarées à l'échelle mondiale. Le principal est le gestionnaire d'événement lorsque l'image vidéo est prête. Mais je veux ces fonctions pour être en mesure d'interagir avec le reste du code, qui est définie dans le jQuery bloc. Je ne veux pas non plus que le montant minimum absolu de fonctions définis dans la portée globale.
OriginalL'auteur eje211 | 2013-12-18
Vous devez vous connecter pour publier un commentaire.
Si vous ne voulez pas polluer l'espace de noms global, créer un objet et ajouter des fonctions à elle.
Ensuite, vous appelez votre fonction à partir de n'importe où en utilisant
myModule.bar()
;myModule
objet de l'automne dans l'espace de noms global depuis votre déclarant en dehors de tout autre objet ou une fonction?Non,
myModule
local pour le script courant. C'est à peu près ce que je cherchais. Je vais l'essayer.Le script doit être dans la portée globale de la fenêtre (c'est à dire l'objet qui tombe dans l'espace de noms global).
Non,
myModule
serait mondial. Mais ce n'est qu'un objet, et l'auteur dit "je ne veux pas plus que le montant minimum absolu de fonctions définis dans la portée mondiale". C'est minimum absolu d'un objet dans l'espace de noms global.OriginalL'auteur Ginden
Vous pouvez joindre les fonctions de l'espace jQuery, dans un sens, de les transformer en plugins jQuery. à ce moment, ils seront disponibles où que jquery est.
Je suis conscient de ce problème, mais dans ce cas, il n'est pas possible. Votre réponse semble ridiculement évident pour moi maintenant, mais a été pensée à partir d'un autre angle. Je suis en ajoutant UN élément de plus à
$
et tout le reste est à l'intérieur de l'jQuery portée. Il est absolument parfait. Merci encore.OriginalL'auteur Kevin B
au lieu d'utiliser
var functionname=function(){}
vous devez utiliserwindow.functionname=function{}
lors de la déclaration de la fonction que vous voulez disponible dans le monde entier.Toutes les fonctions globales sont des propriétés de la
window
objet, mais l'inverse est aussi vrai, toutes les propriétés de lawindow
objet sont des fonctions globales.Qui serait à l'œuvre, mais le point ici n'est pas de faire une fonction globale. de la fenêtre.functionname est, dans le contexte de la programmation DOM mondiale. Il fonctionne, mais je m'attendais à quelque chose de plus propre que cela.
à l'aide de
window.functionname
est simplement un moyen de l'exportation de la méthode, en remplaçant 'fenêtre' avec un bien qui est disponible à l'échelle mondiale pourrait fonctionner tout aussi facilement.OriginalL'auteur Entoarox