2017-10-05 2 views
1

Je souhaite définir #first et #second comme $ (this) pour utiliser l'ID d'élément uniquement lorsque la fonction appelle. c'est possible? Ou d'une autre manière?

(function($){ 
     $.fn.showCircle = function(top,right) { 
      $timeout(function() { 
       $(this).css({ 
        right:right, 
        top:top, 
       }); 
      }); 

     }; 
    })(jQuery); 
    $('#first').showCircle(300,200); 
    $('#second').showCircle(800,200); 
+0

vous ne pouvez pas * définir * 'this' –

+1

Je pense que' this' dans 'timeout' pointerait vers' window' et non vers votre éleme respectif NT. Essayez d'assigner 'var self = this;' avant 'timeout' et les utiliser' self' à la place de 'this' dans' timeout' et cela devrait fonctionner. – Panther

+0

quand je log (cette) sortie est la fenêtre quelle est la référence de ceci? existe-t-il un autre moyen de ne pas utiliser id dans la fonction? @JaromandaX –

Répondre

2

Vous pouvez utiliser jQuery.proxy() pour définir this à un appel de fonction

$timeout($.proxy(function() { 
      $(this).css({ 
       right:right, 
       top:top, 
      }); 
     }, this)); 
0

grâce à @panther commentaire à l'intérieur $timeout ce reportez-vous à window afin @panther dit que j'ai changé la fonction:

(function ($) { 
     $.fn.showCircle = function (top, right) { 
      var self = this; 
      $timeout(function() { 
       $(self.selector).css({ 
        right: right, 
        top: top, 
       }); 
      }); 
     }; 
    })(jQuery);