解决方案
如果您要做的只是隐藏/显示,则可以使用切换方法:
$("#TyPhoto").click(function(){
$("#TyBio").toggle("slow"); //or toggle(1000)
});
API 文档:http ://api.jquery.com/toggle/
备择方案
方法一
你有这样的图像:
<img id="DafPhoto" class="insetshadow" src="" width="352" height="272">
像这样的 div 包含这样的生物:
<div id="DafBio" style="display: none;">.</div>
因此,如果您要使用 ID,则每次点击都将是唯一的。尝试将图像标签更改为以下内容:
<img class="insetshadow" data-bio="DafBio" src="" width="352" height="272">
(为其添加了一个data-bio
属性并删除了id)
然后将您的点击更改为:
$(".insetshadow").click(function(){
var bioId = $(this).data("bio");
$("#" + bioId).toggle("slow"); //or toggle(1000)
});
方法二
或者更简单,你似乎有这种结构:
<ul id="navlist">
<li>
<img class="insetshadow" >
</li>
<!--extra stuff-->
<li>
<img class="insetshadow" >
</li>
</ul>
<span id="descriptblock" class="outshadow">
<div class="bio" id="TyBio"></div>
<!--extra stuff-->
<div class="bio" id="DawnBio"></div>
</span>
请注意,我已经为两者添加了额外的类。删除 ID 并保持这种方式。现在您可以使用 index 属性来匹配元素:
$(".insetshadow").click(function(){
$(".bio").hide();
var index= $(this).index();
$(".bio:eq(" + index + ")").toggle("slow"); //or toggle(1000)
});
编辑
要为此添加额外的事件:
$(".insetshadow").on("click mouseover mouseout", function(){
//hide the rest
$(".bio").hide();
var index= $(this).index();
$(".bio:eq(" + index + ")").toggle("slow"); //or toggle(1000)
});