如果可能,我想在延迟后重新加载jQuery prototype
/ function
而不刷新所有页面。
my.prototype.reloadMe = function () {
setTimeout(function(){
my.reloadMe();
},1000);
alert('ok');
};
我尝试在函数中使用setTimeout
,但它没有工作:它只刷新一次。
感谢您的建议或解释。
答案 0 :(得分:3)
在代码中定义原型函数,然后尝试将其称为对象函数。您应该收到类似&#34的错误; my.reloadMe()
不是函数"。
my.prototype.reloadMe = function () {
setTimeout(function(){
my.reloadMe(); // "my" object does not contain "reloadMe" function
},1000);
alert('ok');
};
如果要访问此函数,可以显式调用此原型函数:
setTimeout(function(){
my.prototype.reloadMe();
}, 1000);
或实例化你的对象并调用这个函数:
setTimeout(function(){
new my().reloadMe();
}, 1000);
两者听起来都不正确。
看起来最好的解决方案是命名您的匿名函数:
my.prototype.reloadMe = function reload() {
setTimeout(reload, 1000);
alert('ok');
};);
您使用setTimeOut
的代码中的 注1:,而它是setTimeout
。 JS区分大小写。也许,它可能是错误的来源。
注2:任何此代码都会使其在无限循环中运行。所以,实际上,你会每秒都收到警报。我希望这正是你想要实现的目标:)
答案 1 :(得分:2)
获取正确的实例应该是this.reloadMe
。
my.prototype.reloadMe = function () {
var that = this;
setTimeOut(function(){
that.reloadMe();
}, 1000);
alert('ok');
};
但这将是一个无限循环。如果你只想再次调用它,你必须打破这个。
my.prototype.reloadMe = function () {
var that = this;
if( !that.delayedCalled ) {
setTimeOut(function() {
that.delayedCalled = true;
that.reloadMe();
}, 1000);
}
alert('ok');
};
答案 2 :(得分:1)
//Create your object:
function myobject(){
}
//add prototype to that object
myobject.prototype.reloadMe = function(){
// instead of recursion you can use interval
setInterval(function () {
alert('ok');
}, 1000);
}
// instantiate that object
var my = new myobject();
//call your function
my.reloadMe();