私が正しく理解していれば、あなたは次のようなことを求めていると思います。
$('a.link').on('click', function(e) {
e.preventDefault();
var slideSelector = '#' + $(this).attr('id').replace('link', 'slide');
// slide down the div which corresponds to the clicked anchor,
$(slideSelector).slideDown(500, function() {
// slide the rest up
$('div.slide').not($(slideSelector)).slideUp(500);
});
// or do it in the reverse order
$('div.slide').not($(slideSelector)).slideUp(500, function() {
$(slideSelector).slideDown(500);
});
});
上記の例で使用したマークアップは次のとおりです。-
<a id="link1" class="link" href="#">Link 1</a>
<a id="link2" class="link" href="#">Link 2</a>
<a id="link3" class="link" href="#">Link 3</a>
<div class="slide" id="slide1">Slide Example #1</div>
<div class="slide" id="slide2">Slide Example #2</div>
<div class="slide" id="slide3">Slide Example #3</div>
<a>
'sと<div>
'sはすべて'sが与えられていることに注意してくださいid
。これらは、2つを相互に関連付けるために使用されます(を見てくださいslideSelector
)。
これは、リンクがクリックされるたびに上記の各例を切り替えるフィドルです。
これは1つの方法にすぎません。たとえば、リンクとdivを別々のコンテナにラップし、をindex()
クリックしたリンクに対応するdivを選択するためにを使用する方法もありますが、リンクとdivは次のようにする必要があります。これが機能するために同じ順序で表示されます。