我创建了一个脚本,用于将数字从零动画设置为它的值。
的jQuery
$({ Counter: 0 }).animate({
Counter: $('.Single').text()
}, {
duration: 1000,
easing: 'swing',
step: function() {
$('.Single').text(Math.ceil(this.Counter));
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="Single">150</span>
我现在想在页面上为每个匹配的类多次运行该脚本。
以下是我正在尝试的但到目前为止没有成功:
HTML
<span class="Count">200</span>
<span class="Count">55</span>
JQUERY
$('.Count').each(function () {
jQuery({ Counter: 0 }).animate({ Counter: $(this).text() }, {
duration: 1000,
easing: 'swing',
step: function () {
$(this).text(Math.ceil(this.Counter));
}
});
});
答案 0 :(得分:67)
您的this
并未引用步骤回调中的元素,而是希望在函数开头保留对它的引用(在我的示例中包含在$this
中) :
$('.Count').each(function () {
var $this = $(this);
jQuery({ Counter: 0 }).animate({ Counter: $this.text() }, {
duration: 1000,
easing: 'swing',
step: function () {
$this.text(Math.ceil(this.Counter));
}
});
});
更新:如果您想显示十进制数字,那么您可以使用Math.ceil
舍入最多2位小数,而不是使用value.toFixed(2)
来舍入值:
step: function () {
$this.text(this.Counter.toFixed(2));
}
答案 1 :(得分:17)
this
不是元素,而是传递给animate()的对象
$('.Count').each(function (_, self) {
jQuery({
Counter: 0
}).animate({
Counter: $(self).text()
}, {
duration: 1000,
easing: 'swing',
step: function () {
$(self).text(Math.ceil(this.Counter));
}
});
});
另一种方法是保持对this
的引用
$('.Count').each(function () {
$(this).prop('Counter',0).animate({
Counter: $(this).text()
}, {
duration: 1000,
easing: 'swing',
step: function (now) {
$(this).text(Math.ceil(now));
}
});
});
答案 2 :(得分:5)
重要:这似乎是一个小差异,但您应该使用数据属性来保存原始数字。更改原始号码可能会产生意想不到的后果。例如,每次元素进入屏幕时我都会运行此动画。但是如果元素进入,退出,然后在第一个动画结束前第二次进入屏幕,它将计入错误的数字。
HTML:
<p class="count" data-value="200" >200</p>
<p class="count" data-value="70" >70</p>
<p class="count" data-value="32" >32</p>
JQuery的:
$('.count').each(function () {
$(this).prop('Counter', 0).animate({
Counter: $(this).data('value')
}, {
duration: 1000,
easing: 'swing',
step: function (now) {
$(this).text(this.Counter.toFixed(2));
}
});
});
答案 3 :(得分:2)
代码的作用是,数字8000从0到8000计数。问题是,它位于相当长的页面的中间,一旦用户向下滚动并实际看到数字,动画已经在用餐了。一旦它出现在视口中,我想触发计数器。
JS:
$('.count').each(function () {
$(this).prop('Counter',0).animate({
Counter: $(this).text()
}, {
duration: 4000,
easing: 'swing',
step: function (now) {
$(this).text(Math.ceil(now));
}
});
});
和HTML:
<span class="count">8000</span>
答案 4 :(得分:1)
您可以在.each()
中获取元素,尝试使用this
$('.Count').each(function (index, value) {
jQuery({ Counter: 0 }).animate({ Counter: value.text() }, {
duration: 1000,
easing: 'swing',
step: function () {
value.text(Math.ceil(this.Counter));
}
});
});
答案 5 :(得分:1)
这是我的解决方案 并且当元素显示到视口中时
来查看运行中的代码
var counterTeaserL = $('.go-counterTeaser');
var winHeight = $(window).height();
if (counterTeaserL.length) {
var firEvent = false,
objectPosTop = $('.go-counterTeaser').offset().top;
//when element shows at bottom
var elementViewInBottom = objectPosTop - winHeight;
$(window).on('scroll', function() {
var currentPosition = $(document).scrollTop();
//when element position starting in viewport
if (currentPosition > elementViewInBottom && firEvent === false) {
firEvent = true;
animationCounter();
}
});
}
//counter function will animate by using external js also add seprator "."
function animationCounter(){
$('.numberBlock h2').each(function () {
var comma_separator_number_step = $.animateNumber.numberStepFactories.separator('.');
var counterValv = $(this).text();
$(this).animateNumber(
{
number: counterValv,
numberStep: comma_separator_number_step
}
);
});
}
https://jsfiddle.net/uosahmed/frLoxm34/9/
答案 6 :(得分:0)
这对我有用!
?movieName=
答案 7 :(得分:0)
这对我有用
array([ 1, -9, -8, -7, -6, -5, -4, -3, 9, 10])
答案 8 :(得分:0)
这对我有用
HTML CODE
<span class="number-count">841</span>
jQuery代码
$('.number-count').each(function () {
$(this).prop('Counter',0).animate({
Counter: $(this).text()
}, {
duration: 4000,
easing: 'swing',
step: function (now) {
$(this).text(Math.ceil(now));
}
});
答案 9 :(得分:-1)
您可以使用jQuery中的动画功能来做到这一点。
$({ countNum: $('.code').html() }).animate({ countNum: 4000 }, {
duration: 8000,
easing: 'linear',
step: function () {
$('.yourelement').html(Math.floor(this.countNum));
},
complete: function () {
$('.code').html(this.countNum);
//alert('finished');
}
});
全文:
http://www.mishelshaji.co.in/howto/animated-number-counter-using-jquery/