4

有谁知道为什么 jQuery document ready 可能不会在网站上触发?我把这个脚本完全放在页脚中,它根本不会触发(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');
});
4

3 回答 3

5

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

于 2014-09-12T15:36:55.873 回答
3

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

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

此错误的原因在您的flow.anything-slider-1.0.jsat 行内11

该文件正在使用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($) {,将 the$作为参数传递。这可能允许您$在整个文件以及 jQuery 中使用。

无论如何,不​​确定$作为参数传递是否适用于您的情况,我只是想我提到它以防万一。

于 2012-09-22T10:16:50.697 回答
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 taginhead部分,它应该可以工作

于 2012-09-22T10:08:12.907 回答