重新定位jQuery“this”

时间:2013-05-28 13:00:05

标签: javascript jquery

我有这段代码:

$('.mainDiv').on('click', function(){
  $(this).animate({'width':'70%', 'height':'70%'}, 300, 'swing');
  $('p', this).stop().animate({'font-size':'70%', 'color':'#000000', 'opacity':'1'}, 300, 'swing',
    function(){
      $(?????).animate({'width':'110%', 'height':'110%', 'opacity':'0'}, 300, 'swing');
    }
  );
});

问题:(?????)如何在定位{child} ".mainDiv"之后重新定位"p"

3 个答案:

答案 0 :(得分:4)

你可以这样做:

$('.mainDiv').on('click', function(){
  var $maindiv = $(this); // <= save the external "this"
  $maindiv.animate({'width':'70%', 'height':'70%'}, 300, 'swing');
  $('p', this).stop().animate({'font-size':'70%', 'color':'#000000', 'opacity':'1'}, 300, 'swing',
    function(){
      $maindiv.animate({'width':'110%', 'height':'110%', 'opacity':'0'}, 300, 'swing');
    }
  );
});

答案 1 :(得分:1)

您可以使用:

var $this=$(this);

然后在需要引用原始元素时使用$this

答案 2 :(得分:1)

我宁愿建议使用:

$('.mainDiv').on('click', function(){
  var that = this;
  $(this).animate({'width':'70%', 'height':'70%'}, 300, 'swing');
  $('p', this).stop().animate({'font-size':'70%', 'color':'#000000', 'opacity':'1'}, 300, 'swing',
  function(){
      $(that).animate({'width':'110%', 'height':'110%', 'opacity':'0'}, 300, 'swing');
  });
});

主要思想是将变量“附加”到其他变量,我个人喜欢将其称为“那个”,但几乎没有可能的方法。