我制作了一个jQuery插件,它会产生一个闪屏。它使用jQuery的animate函数,并通过以下方式进行初始化和激活:
$('#temperature_splash').splashScreen();
$('.tempGraphButton').click(function () {
$('#temperature_splash').splashScreen('splash', 300);
//Here, I would like to make an ajax request when the animation has finished
}
我想在插件中的动画完成后制作一个ajax请求,但我不知道怎么做。有没有人有任何建议?
插件代码概述
$.fn.splashScreen = function (method) {
// Method calling logic
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || !method) {
return methods.init.apply(this, arguments);
} else {
$.error('Method ' + method + ' does not exist');
}
}
var methods = {
init: function () {
//Some initializations
},
splash: function (time) {
//Setting some properties
splashScreenContent.animate({
width: width,
left: leftPos
}, time).animate({
height: height,
top: topPos
}, time);
return false;
}
}
})(jQuery);
答案 0 :(得分:1)
只需添加回调
var methods = {
init: function () {
methods.splash(1000, function() {
//do something when animation is finished
methods.ajax();
});
},
splash: function (time, callback) {
splashScreenContent.animate({
width: width,
left: leftPos
}, time).animate({
height: height,
top: topPos
}, time, function() {
if (typeof callback==='function') callback.call();
});
return false;
},
ajax: function() {
//do ajax stuff
}
}
这只是一个例子,你必须弄清楚要传递的选项以及如何将它自己绑定到你的插件中。
答案 1 :(得分:0)
你不能也加入jQuery中的.done功能吗?
methods.done(function(){ do your code here for the ajax })'
答案 2 :(得分:0)
因为这些调用是异步的,所以你可以在关闭splash代码之前将你的ajax代码放在代码之后,在splash函数内部执行splash函数之前执行代码