2

有人可以向我解释为什么“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'));
 });
4

2 回答 2

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/

于 2013-04-18T02:36:43.987 回答
0

Javascript只有函数范围,this在你的例子中不在回调函数中,它只是引用window对象。

于 2013-04-18T02:38:00.663 回答