我使用函数App.loadTo在任何地方加载一些数据。在显示任何内容之前我需要延迟(使用form-styler插件,重绘表单)。我尝试了setTimeout和setInterval函数,但它们只运行一次,即
1)被称为App.loadTo(params) - 延迟工作
2)用相同的参数调用App.loadTo(params) - 延迟不起作用
我尝试了以下但没有成功
tmp = setInterval(function() {
console.log('I show all invisible!', params.where);
$(params.where).css({
'visibility': 'visible'
});
$('#preloader').remove();
clearInterval(tmp);
}, 110);
我在哪里弄错了?
App.loadTo = function loadTo(params) {
$.ajax({
url: '/' + params.controller + '/' + params.action + '',
type: 'POST',
dataType: 'json',
data: params.sentData,
success: function(server_answer, textStatus) {
if (server_answer.result == 'success') {
if (params.hasOwnProperty('parseHtml')) {
// Data parsing
var html = $(server_answer.html);
html = $(html).find(params.parseBlock);
} else {
var html = $(server_answer.html);
}
// Inserting data
$(params.where).empty().html(html).css({
'visibility': 'hidden'
}).before('<div id="preloader" style="width: 100%; background: url("i/preloader.gif") no-repeat scroll 50% center transparent; min-height: 140px; height: 100%;"></div>');
// Delay before display
setTimeout(function() {
console.log('I show all invisible!', params.where);
$(params.where).css({
'visibility': 'visible'
});
$('#preloader').remove();
}, 110);
} else {
alert_jq_ui(server_answer.error_txt);
}
},
error: function(xhr, errmsg, err) {
alert_jq_ui(xhr, errmsg, err);
}
});
};
答案 0 :(得分:0)
尝试使用clearTimeout()清除setTimeout;如果您选择使用它,否则如果您想尝试setinterval方法,请尝试将其清除,我希望这有帮助
答案 1 :(得分:0)
我创建了一个小提琴,剥离了你的代码...... http://jsfiddle.net/gnsnvjtz/
这里的最大区别是:
var App = {
loadTo: function () {
///loadTo code goes here ...
}
}
而不是`App.loadTo = function loadTo(params)...