2010-02-04 8 views
1

J'essaie d'utiliser un plugin jQuery dans un contrôle. Les pages sur lesquelles le contrôle peut être activé utilisent des publications partielles via un UpdatePanel. J'inclus jQuery et le plug-in lors de l'événement PreRender de contrôle comme celui-ci:Les plugins JQuery ne fonctionnent pas correctement avec ScriptManager d'ASP.NET AJAX

ScriptManager.RegisterClientScriptInclude(
    this, 
    this.GetType(), 
    "jquery", 
    "/_infrastructure/javascript/jquery.js")); 

ScriptManager.RegisterClientScriptInclude(
    this, 
    this.GetType(), 
    "jquery.customPlugin", 
    "/_infrastructure/javascript/jquery.customPlugin.js"); 

Le plugin jQuery customPlugin met en place une nouvelle fonction appelée « executeCustomPlugin ». Plus tard dans l'événement PreRender du contrôle, j'utilise le plug-in sur un élément sur le contrôle:

ScriptManager.RegisterStartupScript(
    this, 
    this.GetType(), 
    "customPlugin init script", 
    @"$(document).ready(function() { 
     $('#elementId').executeCustomPlugin(); 
    });", 
    true); 

Cependant, quand il exécute, je reçois l'erreur JavaScript:

$('#elementId').executeCustomPlugin is not a function 

Il semblerait que si le plugin jQuery n'est jamais exécuté, mais que je configure window.alerts dans le fichier jQuery.customPlugin.js, il est en effet en cours d'exécution.

Existe-t-il un moyen de résoudre ce problème?

+0

Ceci n'est pas lié à votre question, mais vous ne devez pas utiliser this.GetType() comme clé pour enregistrer vos scripts. Vérifiez ici pourquoi: http://blogs.ipona.com/james/archive/2006/10/03/6710.aspx – womp

+0

Merci, c'est un bon point. –

Répondre

0

Il s'avère que mon problème a été causé par l'inclusion de jQuery deux fois. La première instance de jQuery obtenait l'application du plugin, mais la seconde instance de jQuery recevait l'appel.

0

Une explication possible est que votre plugin n'existe pas dans le DOM avant l'exécution du code ScriptManager.

Afficher la source de la page après son affichage dans le navigateur et s'assurer que la balise de script de votre plug-in personnalisé est affichée avant le javascript enregistré auprès de votre gestionnaire de scripts.

+0

Après une double vérification, les scripts apparaissent sur la page dans le bon ordre, ce qui n'est pas le problème. –

+0

Pouvez-vous poster le contenu du fichier plugin .js (ou au moins la déclaration de la fonction)? –