将jQuery包含到页面后,jQuery不会运行

时间:2013-11-15 22:36:21

标签: javascript jquery google-chrome

我的Chrome控制台发生了一些奇怪的事情!任务是将jQuery lib添加到页面,然后使用它(jQuery)做一些事情。我写了一些代码:

    //First part   
    var script = document.createElement('script');
    script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js';
    script.type = 'text/javascript';
    document.getElementsByTagName('head')[0].appendChild(script);
    //Second part 
    $('a[href="?tab=MM"]').text('asdasdasd');

当我将整个代码粘贴到控制台时 - 我得到TypeError: Property 'text' of object [object HTMLAnchorElement] is not a function

但是!当我分别粘贴第一部分(创建脚本标记)然后第二部分(jQuery表达式)时,我得到正常的预期结果!

谁能解释我做错了什么?我该怎么做才能以正确的方式制作剧本

1 个答案:

答案 0 :(得分:5)

当您逐行运行代码时,浏览器有时间下载并执行您要附加的脚本元素中的JavaScript。

当您将其包含在页面中时,只要将脚本元素添加到DOM中,就会执行“第二部分”,但在当前脚本完成之前,将不会执行添加到页面的JS。 / p>

这就是jQuery的getScript方法采用回调函数的原因。

您可以获得类似的效果,但将“第二部分”包装在函数中,并将其用作脚本元素上的加载事件侦听器。我不知道浏览器支持是什么样的。