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

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就指向那个对象吗?


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

【热门文章】
【热门文章】