如果jquery对话框未打开,我正试图创建一个刷新条件。需要新鲜的眼睛,因为它似乎不起作用。代码看起来像这样:
if(!$('#add_note-dialog').dialog("isOpen")) {
setTimeout(function() { location.reload() }, 3000);
}
setTimeout函数本身可以正常工作,当我用firebug控制台检查条件时,它显示正确的状态,但是当我把它放在<script>
时......它根本不起作用或当我删除“ !”条件,即使对话框关闭,它也会一直刷新。
有什么想法吗?
答案 0 :(得分:2)
您问题中的代码基本上等于:
- 如果对话框未打开:
- 在3秒内安排页面刷新。
我认为你在寻找:
- 每3秒:
- 如果对话框未打开:
- 刷新页面。
或者甚至可能:
- 自页面加载或自上次关闭对话框以来每隔3秒:
- 如果对话框未打开:
- 刷新页面。
可以使用setInterval()实现第一种情况:
window.setInterval(function() {
if (!$("#add_note-dialog").dialog("isOpen")) {
window.location.reload();
}
}, 3000);
第二种情况有点棘手,因为它需要绑定dialogopen和dialogclose事件,并跟踪计时器ID,例如与data()。我们也只需要一次性定时器,因为它会触发并刷新页面,或者被取消,所以setTimeout()就足够了:
$(document).ready(function() {
$("#add_note-dialog")
// Set initial timer.
.data("refreshTimer", window.setTimeout(window.location.reload, 3000))
.dialog({
/*
* Your dialog options,
*/
open: function() {
// Dialog open, cancel current timer.
window.clearTimeout($(this).data("refreshTimer"));
},
close: function() {
// Dialog closed, restart timer.
$(this).data("refreshTimer",
window.setTimeout(window.location.reload, 3000));
}
});
});
答案 1 :(得分:0)
试试这个:
if($('#add_note-dialog').is(':hidden')) {
setTimeout(function() { location.reload() }, 3000);
}