2010-04-01 5 views
1

J'essaye de construire un simple plugin jquery qui peut prendre des sélecteurs comme paramètres. Tous les exemples que je trouve s'attendent à plus de «propriétés» brutes (largeur, couleur, etc.) que de sélecteurs réels. Y a-t-il de bons moyens de le faire?jQuery, en passant les sélecteurs comme paramètres d'option

Je trouve cet article: Passing jquery selector to sub-function within a plugin

Mais je suis encore relativement confus.

Le but est un peu comme ça ...

 (function ($) { 
      $.fn.demonstration = function (options) { 

       var defaults = { 
        $selector: null 
       }; 
       var options = $.extend(defaults, options); 

       return this.each(function() { 
        alert($selector.attr('id')); 
       }); 
      }; 
     })(jQuery); 

     $('body').demonstration({ $selector: $('#canvas') }); 
+0

Ce que vous avez fait est que je ferais, bien que je supprime le $ skanky du début de $ sélecteur (voir mon commentaire ci-dessous: P), et probablement définir la valeur par défaut $ sélecteur à $ (cette), au lieu de null. – Matt

Répondre

4

Un sélecteur est rien de plus qu'une chaîne. Tant que vous envelopper un accès à un appel jQuery() ($), les gens peuvent passer à peu près tout (une chaîne de sélecteur, un objet jQuery, un élément DOM, etc.)

Modifier: Saw vous avez ajouté le code , dans ce cas, vous devez y accéder par $(options.$selector).attr('id'). Par curiosité, pourquoi le $ before selector?

+0

Parce que c'est ce que je vois tous les autres utilisateurs. Aucune idée de pourquoi ils l'utilisent. Je suis javascript retardé et encore l'apprendre. – Ciel

+0

@Stacey & Matti: Certaines personnes l'utilisent pour indiquer quelles variables contiennent des objets jQuery. Je déteste personnellement: P – Matt

+0

D'accord, j'ai une question. Est-il possible de passer deux valeurs à la fois? Tels que $ ('body'). Démonstration ('selector', 'autre chose'). Mon objectif est de dépasser plus d'un seul sélecteur. Des idées? – Ciel