有人可以向我解释为什么“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'));
});
答案 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 + '%');
}
});
});
答案 1 :(得分:0)
Javascript只有函数作用域,示例中的this
不在回调函数中,它只是引用window
对象。