2012-01-03 54 views
1

我有一个奇怪的问题。不能让任何jQuery动画工作,甚至不显示(),隐藏(),切换()等

我一直在使用只是JavaScript现在,我想切换到jquery,所以我有最新的jquery加载,有些工作,如replaceWith(),但任何动画获胜没有工作。这是一个非常奇怪的问题,但我没有在控制台中的错误,我很无知,什么是错的...

该网站的代码是真正压缩,不容易阅读,但请看看,如果你看到这个问题。例如,转到链接中的页面,然后单击左侧的“语言:”框。应该发生什么是当你点击H3时,默认显示为none的div #langlis应该显示。但没有发生。

jQuery的replaceWith工作,在右侧的病毒扫描位使用,点击扫描病毒,你会看到它的工作,所以一些jQuery的东西的作品,但不是更简单的东西。 :(

http://filequake.com/download-itunes-x64/

感谢。

+1

在动画之前放置一个断点,然后在控制台中运行$(选择器)。检查并确保其长度> = 1,即您正确选择元素。 – asawyer 2012-01-03 19:01:03

回答

1

当你调用$("#langs_h3").click(function() {...的文件,发现每个#langs_h3元素进行查询获取您提供连接到Click事件(该事件侦听器函数$()对象的click()方法)

但是,在您的页面中,您正在寻找的H3元素在解释器到达您的Javascript代码时仍然不存在,因为您的代码出现在<h3>标记。

你可以做两件事。您可以将您的代码移动到页面的底部,或者你可以保持它在顶部,但把它放在一个函数里面,调用的jQuery()传递给函数作为参数:

jQuery(function(){ 
    // your code here 
    $("#langs_h3").click(function() { /* ... */ } 
}); 

这第二个建议是常见的做法,并让你保持所有的JavaScript在 <header>部分,这是建议。 jQuery函数意识到你正在传递一个函数,并且不会马上执行它,而是在Document onLoad事件发生时将其存储并调用它(类似于将代码放在页面底部)。您正在寻找的H3元素将在那时存在。

+0

嗨,如果我把代码放在头上会更好吗?它最初在那里,我试图排除故障。 – 2012-01-03 19:54:09

+0

嗨,我已经用你的建议把jQuery(function()等)放在它的周围,它可以工作,我也将它移动到头部,它仍然有效,所以谢谢。:)我仍然不明白所有关于事件监听器的说法,以及在元素创建之前运行这些代码,因为它出现在代码后面,我没有意识到页面是从底层构建的?显然我错过了一些基本的东西在这里.. :( – 2012-01-03 19:57:47

+1

请参阅编辑的答案。 – 2012-01-04 08:54:07