解決
非表示/表示のみを行う場合は、toggle メソッドを使用できます。
$("#TyPhoto").click(function(){
$("#TyBio").toggle("slow"); //or toggle(1000)
});
API ドキュメント: http://api.jquery.com/toggle/
代替案
方法 1
次のような画像があります。
<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)
});
方法 2
またはさらに簡単に、あなたはこの種の構造を持っているようです:
<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)
});