2010-10-10 9 views
2

J'ai le code suivant, que je suis de la documentation de jQuery sur la façon de construire un plugin.Comment créer un plugin jQuery?

Je suis juste essayer de créer une simple extension IsNot:

(function ($) { 
    $.fn.isNot = function (selector) { 
     return !this.is(selector); 
    }; 
})(jQuery); 

$(document).ready(function() { 
    $("#someButton").click(function (event) { 
     alert($("#someCheckbox").isNot(":checked"));   
    }); 
}); 

Quand je lance ce get est chargé de fichier javascript correctement, et je peux parcourir le code dans Firebug. Je vois que jQuery est correctement défini, et l'événement click est correctement câblé.

Cependant, j'ai ajouté une montre dans FireBug pour suivre la fonction isNot, et c'est toujours null. Je n'arrive pas à le définir.

Y at-il quelque chose que je ne fais pas correctement?

+0

Que voulez-vous dire? – SLaks

+0

Cela fonctionne bien ici. Comment incluez-vous jQuery sur votre page? Et comment allez-vous inclure votre plugin? – BrunoLM

+0

Si vous l'utilisez comme $ 'partout ailleurs, pourquoi utiliser une fermeture pour le définir comme $' 'lors de la définition de votre plugin? (Ou sont-ils dans des fichiers différents?) – Matchu

Répondre

1

Peut-être la façon dont vous incluez jQuery et votre plugin n'est pas correct.

  • Vérifiez vos script étiquettes de commande.
  • Vérifiez si jQuery se charge correctement
  • Vérifiez si vous ne disposez pas plus que sur instance de jQuery, ce qui rendrait votre plugin disponible dans l'instance qui n'est plus accessible.

Voici un working example.

Et comme vous l'avez mentionné le problème était vraiment un problème avec plusieurs références à jQuery.

Soyez prudent lorsque vous utilisez les modèles externes de Telerik, certains fichiers contiennent des contrôles qui chargent JS et/ou CSS, ce qui peut entrer en conflit avec les vôtres.

-3

Dans la définition de votre IsNot la 2ème ligne doit être

retour $ (this) .est (sélecteur)!;

plutôt que

retour this.is (sélecteur)!;

FYI, voici un bon article sur l'architecture du plugin jQuery. http://www.learningjquery.com/2007/10/a-plugin-development-pattern

+1

Totalement faux ... – SLaks

+0

-1 Ce n'est pas vrai. * this * est un objet jQuery lorsque vous travaillez dans vos propres fonctions jquery. Voir http://remysharp.com/2007/04/12/jquerys-this-demystified/ pour plus d'informations. – Alex

+3

@Alex: C'est encore plus faux que ça - il n'a pas ajouté de '$'; il ne fait que comprendre mal les ordres d'opérations. – SLaks

Questions connexes