jQuery $(document).ready() not firing

Darbio picture Darbio · Oct 20, 2010 · Viewed 30.4k times · Source

Using jQuery 1.4.2 from Google hosted Code.

Is there a reason why the following javascript does not fire all 3 document.ready functions when the document is ready?

The first $(document).ready() function, which renders headers, and the second, which gives a 'Foo' alert box triggered, but subsequent ones in new <script> blocks aren't triggered,

<script type="text/javascript">
    $(document).ready(function () {
        Cufon.replace('h1'); // Works without a selector engine
        Cufon.replace('h2'); // Works without a selector engine
        Cufon.replace('h3'); // Works without a selector engine
        Cufon.now();
    });
    $(document).ready(function () { alert("Number Foo"); });
</script>

// html tags

<script type="text/javascript">
    $(document).ready(function () { alert("Number One"); });
    $(document).ready(function () { alert("Number Two"); });
</script>

These are in seperate web parts, hosted on the same page in Sharepoint2010

Answer

fish2000 picture fish2000 · Oct 20, 2010

I can think of three forensic things to try, right off:

  1. try it with non-google-hosted libraries.
  2. comment out the Cufon calls -- I believe Cufon does some crazy stuff to download additional resources, yes? That may be interfering.
  3. sub in $(window).load() for one or more of your $(document).ready() callback defs. They have different firing criteria -- $(window).load() waits for everything to load up, allegedly -- but the substitution may be revealing.

Of course, console.log() and alert() will be your in-leu-of-debugger-breakpoint best friends in this case.