javascript - 文档在 dom 操作后准备就绪

标签 javascript mobile dom-manipulation ready

我正在用 Phonegap 做一个应用程序,我正在使用一个自建的幻灯片切换来更改页面。 它是这样工作的:

每个页面都是一个高度和宽度为 100% 的 div,因此如果我更改页面,我会将下一个 div 设置为当前事件的右侧并将两者都滑动到左侧。

现在问题来了:滑动工作正常,但它是在右侧 div 的内容完全加载之前执行的。所以右边的 div 滑入空白,只有几百毫秒后内容才会出现。

我用 document.ready 试过了,但据我所知,这个事件只在第一次加载 DOM 时执行。

在我用 Javascript 操作了 DOM 之后,有人知道如何等待 DOM 再次完全呈现吗?

最佳答案

在您的情况下,您可以在下一个 div 的内容中选择一个元素,并使用 $(...).length 继续检查它。如果该值 > 0,则加载 DOM,您可以更改页面。

你可能想试试这个功能:

Function.prototype.deferUntil = function(condition, timeLimit) {
    var ret = condition();

    if (ret) {
        this(ret);
        return null;
    }

    var self = this, interval = null, time = ( + new Date());
    interval = setInterval(function() {
        ret = condition();
        if (!ret) {
            if (timeLimit && (new Date() - time) >= timeLimit) {
                // Nothing
            } else {
                return;
            }
        }
        interval && clearInterval(interval);
        self(ret);
    }, 20);

    return interval;
};

用法:

(function() {
    console.log('Next page loaded');
}).deferUntil(function() {
    return $('#nextDiv').length > 0;
}, 3000);

上面的例子会每 20 毫秒(不超过 3 秒)检查一次有 id="nextDiv" 的 div。加载 div 后,它将在控制台中显示“下一页已加载”。

你可以试试这个 fiddle

关于javascript - 文档在 dom 操作后准备就绪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13083648/

相关文章:

javascript - 从另一个 JavaScript 函数调用 jQuery 函数

javascript - 在 jQuery 高度动画之后关注 Webkit 中的文本区域

android - 移动应用程序和 Web 服务数据传输(WCF 和 JSON)

c# - 大型 XML 文件,XmlDocument 不可行但需要能够搜索

javascript - 单击后如何切换移动菜单?

javascript - angularjs获取元素当前位置的方法

javascript - 如何向下滚动 pre 标签

javascript - string.prototype.search ('$' ) 在每个字符串上返回正 int

javascript - 代码只有第一次运行良好,之后就会崩溃(DOM)

javascript - 如何使用 Semantic UI 和 JQuery 在特定卡片上进行调光,而不是在我的所有卡片库上进行切换