J'essaie d'utiliser une fonction JavaScript avec un gestionnaire d'événements pour jQuery, mais elle nécessite un élément d'information supplémentaire. J'ai essayé de l'ajouter à un objet avec les données, et en utilisant this
, mais this
est nulle quand il est exécuté. Je crois que cela a quelque chose à voir avec la fonction de copie en JavaScript. Comment puis-je transmettre mes informations supplémentaires?Transférer des arguments supplémentaires dans l'événement javascript
<script type="text/javascript">
var WIDTH_ATTR = 'initWidth';
function resizeHandler(event, ui){
var change = ui.size.width - this.master.attr(WIDTH_ATTR);
this.slave.width(slave.attr(WIDTH_ATTR) - change);
};
function splitResize(master, slave, masterHandles){
var s = new SharedResize(master, slave);
master.resizable({ handles: masterHandles, resize: s.resizeHandler });
}
function SharedResize(master, slave){
this.master = master;
this.slave = slave;
this.resizeHandler = resizeHandler;
master.attr(WIDTH_ATTR, master.width());
slave.attr(WIDTH_ATTR, slave.width());
}
// initialise plugins
$(function(){
try {
$('ul.sf-menu').superfish();
splitResize($('#Content'), $('#InfoPanel'));
}catch(ex){
alert(ex.message);
}
});
</script>
Ce code donne une erreur de
Line:13 'this.master' is null or not an object.
Lorsqu'un Resize est tentée. Puis-je faire en sorte que ce schéma fonctionne, ou existe-t-il un autre moyen d'associer le gestionnaire d'événements à mes données?
grâce qui fonctionne! J'ai dû ajuster votre fermeture, mais ça m'a assez proche. J'ai mis à jour votre réponse pour refléter mes changements. –
Oh ok bien - je n'étais pas sûr de ce que vous vouliez dire par "les paramètres supplémentaires" chose :-) – Pointy
mon but original était de passer directement 'master' et' slave' directement au gestionnaire de redimensionnement. Je vois comment je pourrais le faire maintenant, en utilisant une fermeture, mais la version de l'objet est déjà écrite. –