JSFIddle不使用Jquery

在研究这个问题的答案时,我创造了这个jsfiddle 。 由于某种原因,它不起作用,当我使用firebug的错误控制时,它返回“.show”不是一个函数。 这让我相信jsfiddle错误地加载jQuery。 JSFiddle和jQuery之间是否存在任何已知问题? 我的代码是不正确的(BTW,当我改变.show("slow").style.display = "inherit"它工作正常,这就是为什么我认为它必须是jQuery的问题…)

一个工作的JSFiddle将不胜感激。

几个问题:

  1. 你忘记了}
  2. 您正在对未包装在jQuery对象中的元素调用jQuery方法。 你需要这样做:
 $(itemName.getElementsByTagName("span")[0]).show("slow"); 

(注意包装)。 jQuery方法不会神奇地扩展默认元素,必须首先包装对象。

现在请注意, 此版本有效 。

编辑

或者,您可以使用jQuery的构造(范围)的第二个参数并缩短此代码:

 function showy(itemName) { $('span:first',itemName).show("slow"); } function closy(itemName) { $('span:first',itemName).hide("slow"); } 

EDITv2

胡安提出了一个很好的观点,你也应该将javascript与标记分开。 我的意思是避免使用元素的on *属性,并将绑定保留在外部.js文件或标记内。 例如

  ...  ...   ...  SHOW: this text  on hover  ...  

我把它修改为:

 function showy(itemName) { $(itemName).find("span").show("slow"); } function closy(itemName) { $(itemName).find("span").hide("slow"); } 

请参阅: http : //jsfiddle.net/ttweX/

真的不喜欢突兀的javascript:p

您应该习惯于从未使用内联事件处理程序,而是使用jQuery的事件绑定。

更好的方案:

http://jsfiddle.net/ttweX/2/

汤姆所联系的那个也做了一些奇怪的无限眨眼的讨厌。

 $(function(){ $('a.button').hover( function(){ $(this).find('span').show('slow'); }, function(){ $(this).find('span').hide('slow'); } ) });