几个问题:
- 你忘了一个
}
.
- 您正在对未包装在 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");
}
编辑v2
Juan 提出了一个很好的观点,您还应该将 javascript 与标记分开。我的意思是避免使用元素的 on* 属性,并将绑定保留在外部 .js 文件或<script>
标签中。例如
<head>
...
<script src="http://path.to/jquery.js">
<script>
$(function(){ // execute once the document is ready (onload="below_code()")
// bind to the buttons' hover events
// find them by the "button" and "white" class names
$('.button.white').hover(function(){ // hover event (onmouseover="below_code()")
// find the first span within the link that triggered the event
$('span:first',this).show('slow');
},function(){ // mouse out event (onmouseout="below_code()")
// likewise, find first span
$('span:first',this).hide('slow');
});
});
</script>
...
</head>
<body>
...
<a href="#" class="button white" id="button1">
<span id="spanToShow">SHOW: this text </span>
on hover
</a>
...
</body>