if $(document).not-ready()?如何检查页面是否仍在使用 Jquery 加载?

发布于 2024-09-06 02:27:58 字数 30 浏览 9 评论 0原文

我只想在文档仍在加载时调用函数..我该怎么办?

I want to call a function only if the document is still loading.. how can I?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

笛声青案梦长安 2024-09-13 02:27:58

您可以检查 document.readyState 或在全局范围内使用一个简单的变量:

var ready = false;
$(document).ready(function () {
    ready = true;
});

You could check document.readyState or use a simple variable in the global scope:

var ready = false;
$(document).ready(function () {
    ready = true;
});
寄与心 2024-09-13 02:27:58

您可以在 JavaScript 中正常运行函数并在 jQuery.ready 中覆盖它:

function foo() {
    // …
}
$(document).ready(function() {
    foo = function() {};
});
foo();

现在,如果 foo 递归调用自身,则当 foo 被调用时它将停止文档准备好后重新定义。

You could run a function normally in JavaScript and overwrite it within jQuery.ready:

function foo() {
    // …
}
$(document).ready(function() {
    foo = function() {};
});
foo();

Now if foo calls itself recursively, it will stop when foo is redefined when the document is ready.

清风不识月 2024-09-13 02:27:58

您可以使用非常有用的 jQuery 延迟对象来检查文档是否已加载:

http://api.jquery.com/category/deferred-object/

http://eng.wealthfront.com/2012/12/jquerydeferred-is-most-important-client.html

例如

(function($) {    
    var jqReady = $.Deferred();
    // Bind doc ready to my deferred object
    $(document).bind("ready", jqReady.resolve);

    // Check to see is doc is ready
    if(jqReady.state() !== 'resolved'){
        alert('Doc is not ready');
    }

    $.when(jqReady).then(function () {
        // Code here will run when doc is ready/state === 'resolved'
        alert('Doc is ready');
    });
})(jQuery);​

jsFiddle 示例

You could use the very useful jQuery deferred object to check if the document has/hasn't loaded yet:

http://api.jquery.com/category/deferred-object/

http://eng.wealthfront.com/2012/12/jquerydeferred-is-most-important-client.html

E.g.

(function($) {    
    var jqReady = $.Deferred();
    // Bind doc ready to my deferred object
    $(document).bind("ready", jqReady.resolve);

    // Check to see is doc is ready
    if(jqReady.state() !== 'resolved'){
        alert('Doc is not ready');
    }

    $.when(jqReady).then(function () {
        // Code here will run when doc is ready/state === 'resolved'
        alert('Doc is ready');
    });
})(jQuery);​

jsFiddle example

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文