大家好。有以下功能:
function changeCount(current, next, selector) {
$(function () {
$({numberValue: current}).animate({numberValue: next}, {
duration: 500,
easing: "linear",
step: function(val) {
$(selector).html(Math.ceil(val));
}
});
});
}
动作非常简单——数字变化的动画。问题:如何将其转换为:
(function( $ ){
$.fn.changeNumbers = function(next) {
};
})(jQuery);
那些。以便在代码中可以通过$(selector).changeNumbers(current, next)
做过这个:
(function( $ ){
$.fn.changeNumbers = function(next) {
$({numberValue: this.text()}).animate({numberValue: next}, {
duration: 500,
easing: "linear",
step: function(val) {
$(this).html(Math.ceil(val));
}
});
};
})(jQuery);
Uncaught TypeError: Cannot read property 'createDocumentFragment' of undefined
但是它会在线抛出错误$(this).html(Math.ceil(val));
在创建函数时,我并不完全理解 this 的上下文,这是我第一次使用 jquery 做自己的事情。在此先感谢您的帮助!
在 handler
step
this
中,它指向的不是原始元素,而是构造的对象{numberValue: this.text()}
您需要在启动之前
animate
保存到局部变量并this
在处理程序中step
访问此变量然而,在 jQuery 中,习惯上构建调用链。因此,如果您返回传递
this
给函数的那个,那就太好changeNumbers
了