La meilleure façon de charger et de décharger le fichier JS via JQuery
J'ai été frustated en essayant de trouver la meilleure façon de charger et décharger certains fichier JS via jQuery, ce dernier était ce que je peux faire:
$("#button").live("click", function(){
var pl = $(this).attr('rel');
$.getScript('' + siteAddress + 'min/?js=fjs'+ pl +'', function() {
$('#container').load(""+ siteAddress +"load/"+ pl +"/");
});
});
Ce que je veux faire est de charger une page via jQuery, et au même temps il va inclure les fichier JS externe pour la page de été chargé, il fonctionne bien pour la première fois, mais quand je clique sur le bouton de nouveau, la dernière JS encore chargé, donc il va déclencher la fonction à l'intérieur de JS fichier deux fois, le temps pour la même page.
J'ai essayer de l'utiliser .ajouter, également par le changement <script>
attribut et de créer dynamicaly <script>
élément, mais encore, tout ce que j'ai est le même résultat.
OriginalL'auteur dedudit | 2011-07-18
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas "décharger" de JavaScript. Une fois qu'il est chargé, il est chargé. Il n'y a pas de undo.
Cependant, vous pouvez détacher les gestionnaires d'événements. Voir: http://api.jquery.com/unbind/
live()
est un cas particulier pourunbind()
, cependant. En direct des gestionnaires d'événements sont attachés àdocument
plutôt que de l'élément, de sorte que vous devez supprimer le gestionnaire de la sorte:Cependant, qui aurait probablement supprimer plus gestionnaires que seulement celui en question, de sorte que vous pouvez le faire de deux choses: 1) le nom de votre fonction de gestionnaire ou 2) créer un espace de noms.
De nommage fonction de gestionnaire
Namespacing
Mise à JOUR:
@RTPMatt mentionne ci-dessous,
die()
est en fait plus approprié. La méthode décrite ci-dessus fonctionne, maisdie()
est plus facile à utiliser. Cependant, avecdie()
vous devez faire correspondre le sélecteur exactement à celui utilisé lors de l'appellive()
ou les résultats peuvent être imprévisibles:OriginalL'auteur Chris Pratt
Vous pourriez même avoir un "espace réservé" et vérifier son existence avant de charger à nouveau le script. Mais, d'abord, je pense qu'il serait mieux pour charger la page et seulement après le chargement du script externe (et seulement si c'est nécessaire)
Dans le script externe, vous aurez besoin d'avoir la fonction
Où "abcde" de "page_abcde_init()" est la valeur de l'élément cliqué
var pl = $(this).attr('rel');
OriginalL'auteur Erenor Paz