我有一个jQuery代码,
<script type="text/javascript">
$.idleTimeout('#idletimeout', '#idletimeout a', {
idleAfter: 3,
pollingInterval: 2,
keepAliveURL: 'keepalive.php',
serverResponseEquals: 'OK',
onTimeout: function(){
$(this).slideUp();
window.location = "timeout.htm";
},
onIdle: function(){
$(this).slideDown(); // show the warning bar
},
onCountdown: function( counter ){
$(this).find("span").html( counter ); // update the counter
},
onResume: function(){
$(this).slideUp(); // hide the warning bar
}
});
//
</script>
现在如果我打电话给它,它就会隐藏滑块。
function loadXMLDoc(message)
{
$.get("test1.php?data="+message, function(result){
$('#idletimeout').slideUp(); // hide
});
}
</script>
有没有办法在 loadXMLDoc 函数中调用 onResume 函数(在顶部)? 感谢。
答案 0 :(得分:3)
查看插件,它将resume函数绑定到传入的第二个参数的click处理程序(在您的情况下为'#idletimeout a')。如果您想手动重置计时器,您应该可以这样做:
$('#idletimeout a').click();
这将触发onResume
功能,该功能将滑动div并重置计时器。
作为参考,我只是看一下插件的源代码,看看发生了什么。您可以在此处查看相关部分。这是在单击resume元素(第二个参数)时发生的情况:
// bind continue link
this.resume.bind("click", function(e){
e.preventDefault();
win.clearInterval(self.countdown); // stop the countdown
self.countdownOpen = false; // stop countdown
self._startTimer(); // start up the timer again
self._keepAlive( false ); // ping server
options.onResume.call( self.warning ); // call the resume callback
});
如果您只想直接调用它(并且没有任何重置定时器的内部结构),您也可以这样做:
var idlePlugin = $.idleTimeout('#idletimeout', '#idletimeout a', { ...
idlePlugin.options.onResume.call();
但请记住,这不会重置计时器,它只会直接调用onResume函数。重置计时器的唯一方法是调用click处理程序,因为这是定义此功能的地方。