Tout d'abord, je sais que c'est un problème de base de JS, pas de jQuery. Je suis à ce point d'apprentissage où je n'arrive pas à me concentrer complètement sur certaines questions de portée. J'ai donc besoin d'explications.Options du plugin jQuery
J'ai lu tous les articles/tutoriels que je peux trouver, mais j'ai juste besoin de quelques réponses. J'ai mis en place ce code de base pour expérimenter (comme le code actuel est beaucoup trop gros pour être publié ici). Dans l'expérience suivante, lorsque le bouton selector1-change est cliqué, la variable 'cmd' s'affiche correctement, mais la référence à this.options est 'non définie', car il s'agit d'une instance différente de MySelector(), sauf si Je suis loin.
Alors, comment peut-on appeler une instance d'un objet comme celui-ci.
Exemple:.
Vous pouvez utiliser la boîte de dialogue de jQueryUI en créant, puis plus tard, vous pouvez passer des commandes comme à $ (« # mydiv ») de dialogue (« fermer »); et qui accèdera à l'instance attachée à cet élément. Comment cela est-il accompli?
JQUERY_MYSELECTOR.JS
(function($){
$.fn.MySelector = function(incoming) {
if (typeof(incoming) != 'object') {
return runCommand(incoming);
}
var options = $.extend({},{
id: false,
backgroundColor: false
},incoming);
function runCommand(cmd) {
alert('blah:'+this.options.backgroundColor+"\n"+'cmd:'+cmd);
}
}
})(jQuery);
SCRIPT
<script type="text/javascript" src="jquery_myselector.js"></script>
<script type="text/javascript">
$j(document).ready(function() {
$j('#selector1).MySelector({ backgroundColor: '#000000' });
$j('#selector1-change').click(function() {
$j('#selector1').MySelector('mooocow');
});
});
</script>
STYLE
<input type="button" value="selector1" id="selector1" />
<br/>
<input type="button" value="selector1-change" id="selector1-change" />
MISE À JOUR oublié d'utiliser le plugin sur sélecteur1 (duh)
Ok, je comprends ce que vous dites itérer le tableau. Je vais réparer ça. Mais l'appel de runCommand est supposé être _after_ le plugin a été exécuté la première fois. Doit être apprécié lorsque vous exécutez $ ('# myDiv'). Dialog(); (à partir de jQueryUI) .. et plus tard, vous pouvez exécuter $ ('# myDiv'). dialog ('close'); Une fois le plugin "attaché" à un élément DOM, vous pouvez lui envoyer des commandes. Beaucoup de plugins accomplissent ceci, mais je ne peux pas comprendre comment. – Spot
J'ai changé mon code pour qu'il se comporte de manière plus dynamique. Maintenant, je comprends pourquoi vous vouliez utiliser 'this.options'. En itérant avec 'each', la fonction callback peut accéder à l'item en cours avec' this'. Vous pouvez l'utiliser avec 'runCommand', mais vous devez également stocker les options sur l'élément DOM, comme le fait ce code. –
Merci beaucoup. – Spot