jQuery这个选择器不能用于animate()方法属性

时间:2013-04-18 02:33:56

标签: jquery jquery-animate this

有人可以向我解释为什么“this”选择器不能用于animate()方法属性。

参见http://jsfiddle.net/qZVv4/的第一个例子,没有产生任何错误,只是忽略它。

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

2 个答案:

答案 0 :(得分:3)

因为this不是指您的元素。您仍处于同一范围内,因此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/

答案 1 :(得分:0)

Javascript只有函数作用域,示例中的this不在回调函数中,它只是引用window对象。