2010-01-18 9 views
0

S'il vous plaît jeter un oeil à l'adresse suivante:besoin d'aide pour écrire un plugin jQuery personnalisé

jQuery.fn.jqPos = function(target, settings) { 
    settings = jQuery.extend({ 
     offset: [ 0, 0 ] 
    }, settings); 

    return this.each(function() { 
     magic($(this), target, settings); 
     $(window).resize(function(){ 
      magic($(this), target, settings); 
     }); 
    }); 

    function magic(self, target, settings) { 
     // Here I position self close to target 
    } 
}; 

Cela fonctionne parfaitement quand j'initialiser le plugin, comme $('div#one').jqPos($('div#two')); et la méthode magique Runs comme il se doit. Mais à l'événement window.resize rien ne se passe du tout (je veux qu'il fonctionne la même méthode avec les mêmes paramètres et paramètres)!

Comment ça se fait? Et comment surmonter? Dans la méthode magique (à window.resize), les arguments sont tous undefined.

Répondre

1

Youre confondant ce this fait référence dans votre $(window).resize(function(){ magic($(this), target, settings); }); this ne fait plus référence à votre élément, mais plutôt le window lui-même. essayez:

return this.each(function() { 
     var $this = $(this); 
     magic($this, target, settings); 
     $(window).resize(function(){ 
      magic($this, target, settings); 
     }); 
    }); 
+0

lol bien sûr. Parler de brainfart. Merci m8! – Mickel

Questions connexes