[英].done() callback when using custom jQuery Animations
I'm using the following functions in order to animate slides just like slideUp()
or slideDown()
: 我正在使用以下功能来为幻灯片设置动画,就像
slideUp()
或slideDown()
:
(function($) {
jQuery.fn.slideLeftHide = function(speed, callback) {
this.animate({
width: "hide",
paddingLeft: "hide",
paddingRight: "hide",
marginLeft: "hide",
marginRight: "hide"
}, speed, callback);
}
jQuery.fn.slideLeftShow = function(speed, callback) {
this.animate({
width: "show",
paddingLeft: "show",
paddingRight: "show",
marginLeft: "show",
marginRight: "show"
}, speed, callback);
}
})(jQuery);
The thing is, that i want to call a function only once after the animation ends. 事情是,我想要的动画结束后调用函数只有一次 。 I tried doing this by:
我尝试通过以下方式进行操作:
$(".item").slideLeftHide(function() {
$(this).remove();
}).done(function() {
$(".tab").each(function() {
$(this).attr('data-status', 'success');
});
});
When I execute this code, I get an error message saying Cannot read property 'done' of undefined
. 当我执行此代码时,收到一条错误消息,提示
Cannot read property 'done' of undefined
。 The same happens with .then()
instead of .done()
. .then()
而不是.done()
发生相同的情况。
How can I solve this? 我该如何解决?
Thanks! 谢谢!
(function ($) {
function slideLeftBinder(action) {
return function () {
var i = 0,
speed = ((Number(arguments[i]) === parseFloat(arguments[i]) && !isNaN(arguments[i])) || undefined) && arguments[i++],
callback = (typeof arguments[i] === 'function' || undefined) && arguments[i++],
self = this;
return new Promise(function (resolve) {
var completed = 0;
self.animate({
width: action,
paddingLeft: action,
paddingRight: action,
marginLeft: action,
marginRight: action
}, {
duration: speed,
complete: callback,
always: function() {
if (self.length === ++completed) {
resolve(self);
}
}
});
});
};
}
jQuery.fn.slideLeftHide = slideLeftBinder('hide');
jQuery.fn.slideLeftShow = slideLeftBinder('show');
})(jQuery);
Use it like this: 像这样使用它:
$(".item")
.slideLeftHide(function() {
$(this).remove();
})
.then(function(selector) {
console.log('selector: ', selector);
$(".tab").attr('data-status', 'success');
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.