JQuery中animate()方法中$(this)为什么不指向调用它的对象?

$(document).ready( function () {
    $('<div id="navigation_blob"></div>').css({
      width: 0,
      height: $('#navigation li:first a').height() + 10
    }).appendTo('#navigation');

    $('#navigation a').hover(
      function () {
        $('#navigation_blob').animate(
          {
            width:10, 
            left: $(this).position().left    //这里的$(this)为什么指向了外部调用hover的那个$('#navigation a'),
                                            //而不是直接调用animate()这个方法本身的$('#navigation_blob')这个对象呢?
          },
          {
            duration: 2000, 
            easing: 'easeOutElastic',
            queue: false
          }
        );
      },

感觉像是$(this) 跳到外层去找元素了,this不是应该谁调用了这个方法,this就指向那个对象吗?

阅读 2.5k
1 个回答

animate方法里面传入的是一个参数,这个参数是一个对象,对象里的this哪来的,当然是他当前的上下文里的this咯,这个this不是写在animate的方法里面,只是作为一个参数传入animate方法,这个参数的当前上下文是在$('#navigation_blob')这个对象调用的方法里面,所以当然指向$('#navigation_blob')

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题