JSFIddle不使用Jquery
在研究这个问题的答案时,我创造了这个jsfiddle 。 由于某种原因,它不起作用,当我使用firebug的错误控制时,它返回“.show”不是一个函数。 这让我相信jsfiddle错误地加载jQuery。 JSFiddle和jQuery之间是否存在任何已知问题? 我的代码是不正确的(BTW,当我改变.show("slow")
到.style.display = "inherit"
它工作正常,这就是为什么我认为它必须是jQuery的问题…)
一个工作的JSFiddle将不胜感激。
几个问题:
- 你忘记了
}
。 - 您正在对未包装在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的事件绑定。
更好的方案:
汤姆所联系的那个也做了一些奇怪的无限眨眼的讨厌。
$(function(){ $('a.button').hover( function(){ $(this).find('span').show('slow'); }, function(){ $(this).find('span').hide('slow'); } ) });