2012-01-06 13 views
6

No puedo entender qué está mal con mi código aquí. Estoy intentando cargar jQuery dinámicamente si no está presente en la página.Cargando jQuery sobre la marcha

<head> 
    <script> 
    (function() { 
     if (typeof jQuery != 'undefined') { 
     /* jQuery is already loaded... verify minimum version number of 1.4.2 and reload newer if needed */ 
     if (/1\.(0|1|2|3|4)\.(0|1)/.test(jQuery.fn.jquery) || /^1.1/.test(jQuery.fn.jquery) || /^1.2/.test(jQuery.fn.jquery)|| /^1.3/.test(jQuery.fn.jquery)) { 
     loadJQ(); 
     } 
     } else { 
      loadJQ(); 
     } 

    function loadJQ() { 
    /* adds a link to jQuery to the head, instead of inline, so it validates */ 
    var headElement = document.getElementsByTagName("head")[0]; 
    linkElement=document.createElement("script"); 
    linkElement.src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"; 
    linkElement.type="text/javascript"; 
    headElement.appendChild(linkElement); 
    //alert(headElement); 
    } 

    })(); 

    </script> 
</head> 

Este es mi cuerpo.

<body> 
    <button>Click me</button> 
    <script type="text/javascript"> 
    $(document).ready(function(){ 
    alert("hello"); 
    $("button").click(function(){ 
    $(this).hide(); 
    }); 
    }); 
    </script> 
</body> 

Cuando puse esto en una página html recibo un error que dice que "$ no está definido". Alguien tiene alguna idea de por qué?

+0

Debido a que jQuery no se ha cargado en el momento en el ''

2

"$" no está definida error resulta de código jQuery no se descargan en el momento en el guión trata de ejecutar.

puede intentar utilizar la secuencia de comandos de atributo aplazar para retrasar la ejecución de su código hasta que se carga al cambiar la etiqueta de script a

<script type="text/javascript" defer="defer"> 
Cuestiones relacionadas