jQuery(document).ready()不会触发

时间:2012-09-22 09:59:27

标签: javascript jquery

有谁知道为什么jQuery文档就绪可能无法在网站上触发?我把这个脚本完全放在页脚中,它根本不会触发(jQuery 1.8包含在head部分中):

<script type="text/javascript">
jQuery(document).ready(function() { 
     alert('test');
     jQuery("#slideshow iframe").each(function(){ 
          alert('test');
     });
});
</script>

没有Javascript错误,控制台是空的,当我在Firebug的控制台中运行它时,它可以工作:

jQuery("#slideshow iframe").each(function(){ 
     alert('test');
});

3 个答案:

答案 0 :(得分:5)

虽然在这个特定的实例中并非如此,但是jQuery bug 10251可能会发生一种非常烦人的方式:$(document).ready()回调中的错误将阻止在运行后注册的所有回调。 (在这种情况下会出现Javascript错误,但它看起来可能完全不相关。)

答案 1 :(得分:3)

您目前在页面上收到此错误

Uncaught TypeError: Property '$' of object [object Window] is not a function 

此错误的原因在flow.anything-slider-1.0.js11行。

该文件正在使用jQuery(document).ready(),因此未定义$

将行11从使用$更改为jQuery有效:

// doesn't work
$("#content").before("<div id=\"cycledump\"></div>");

// Does work
jQuery("#content").before("<div id=\"cycledump\"></div>");

整个文件使用jQuery而不是$,所以文件应该坚持使用jQuery的一种方式而不是混合它。

修改
我只是仔细检查了.ready()文档,以下段落很有意思,因为它似乎与问题有关:

  

别名jQuery命名空间
  使用其他JavaScript库时,我们可能希望调用$.noConflict()以避免名称空间困难。调用此函数时,$快捷方式不再可用,强制我们每次正常编写jQuery时都会写$

     

但是,传递给.ready()方法的处理程序可以接受一个参数,该参数将传递给全局jQuery对象。这意味着我们可以在.ready()处理程序的上下文中重命名对象,而不会影响其他代码:

jQuery(document).ready(function($) {
  // Code using $ as usual goes here.
});

这意味着,您可以将11作为参数传递给jQuery(document).ready(function($) {,而不是修复第$行。这可能允许您在整个文件和jQuery中使用$

无论如何,不​​确定传递$作为参数会对你的情况起作用,我只是觉得我提到它以防它起作用。

答案 2 :(得分:1)

它可能是jQuery库路径问题。尝试从jquery.com -

加载它
<script src="http://code.jquery.com/jquery-1.8.0.min.js"></script>

<script type="text/javascript">

$(document).ready(function() { 
     alert('test');
});

</script>

复制此代码并粘贴到head部分

编辑:

您正在使用jQuery 1.4.21.8 jQuery UI

尝试移动script tag部分中的head,它应该可以正常工作