有谁知道为什么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');
});
答案 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.js
第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($) {
,而不是修复第$
行。这可能允许您在整个文件和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.2
和1.8 jQuery UI
尝试移动script tag
部分中的head
,它应该可以正常工作