完全DOM加载后严格执行jQuery操作

时间:2012-03-09 16:12:00

标签: javascript jquery preloader

我正在使用jquerynewsticker以新闻自动收录方式显示数字π的100,000位数字。 如果我打开了我的Chrome检查器,我可以看到页面从上到下加载,但是数字之后,以及它后面的所有JS,都会呈现黑色几秒钟,然后才变为默认颜色。但是,脚本已经开始运行,您可以在此处的测试页面上看到:http://marckremers.com/pi/ticker/ 它似乎运行,但没有渲染。 如果我减少数字的大小,它的工作原理。 所以这显然是装载不完整的问题。

如果所有内容都已100%加载,我如何强制脚本才能播放?

2 个答案:

答案 0 :(得分:2)

查看您的网站,我看到您加载了自动收报机插件并执行了自己的代码:

jQuery(document).ready(function($) {
 $(function () {
        $('#js-news').ticker({
            speed: 0.05,
            fadeInSpeed: 0,
            titleText: '',
            controls: false,
        });
    });
});

此代码中有2个问题:

1)不必要的筑巢。你在文件准备就绪时执行你的代码,然后再次调用文件就绪处理程序($(function(){...});

请记住,编写$(document).ready(function(){})或$(function(){})的目的完全相同。因此,您可以删除第二个事件侦听器(无用):

jQuery(document).ready(function($) {
    $('#js-news').ticker({
        speed: 0.05,
        fadeInSpeed: 0,
        titleText: '',
        controls: false,
    });
});

使用document.ready注册,您的代码将在完全构建DOM后运行。

2)我看到的另一个问题是你的选择器#js-news无法解决!我看到页面中没有ID = js-news的元素......我错过了什么吗?

答案 1 :(得分:1)

你可以把你的代码放在上面等待dom完全加载。

$(function() {
    // Your code
});

如果还不够,如果你想等待加载的所有东西(图片,css,......),你可以把你的代码放在上面:

$(function()
{
    $(window).bind('load', function()
    {
        // Your code
    });
});