2013-04-18 2 views
2

Может кто-нибудь объяснить мне, почему «этот» селектор недоступен для свойств свойств animate().jQuery Этот селектор недоступен для свойств анимации()

См. 1-й пример в http://jsfiddle.net/qZVv4/, ошибок нет, он просто игнорирует его.

$('#test1 .bar[data-percentage]').animate({ 
    width: $(this).attr('data-percentage'), 
    easing: 'easeOutBounce' 
}, 1000, function() { 
    $(this).text($(this).attr('data-percentage')); 
}); 

ответ

3

Потому что не относится к вашему элементу. Вы все еще в том же объеме, поэтому this не меняется. Вы должны были бы сделать что-то вроде этого, вместо:

// You need the easing plugin 
// https://github.com/danro/jquery-easing 

$('#test1 .bar[data-percentage]').each(function() { 
    var $this = $(this); 

    $this.animate({ 
     width: $this.data('percentage') 
    }, { 
     duration: 1000, 
     //easing: 'easeOutBounce', 
     step: function(value) { 
      $(this).text(value + '%'); 
     } 
    }); 
}); 

Демо: http://jsfiddle.net/qZVv4/4/

+0

Да, что работает thanx – sjm

0

Javascript только имеет область видимости функции, то this в вашем примере не в функции обратного вызова, это только со ссылкой на объект window.

+0

Ах да конечно – sjm

Смежные вопросы