デフォルトで一部を表示したい要素(たとえば100px)がありますが、リンクをクリックして残りを表示します。jQueryの組み込みslideToggleでは不可能と思われるため、解決策があるこのサイトを見つけました。このソリューションは(以下のコードに示すように)機能しますが、同じページ上の複数のスライダーでは機能しません。どういうわけか、特定のスライダーのIDで「.slider」を切り替える必要があることはわかっていますが、その方法がわかりません。現在のIDを取得する必要がありますが、これをopenSlider関数とcloseSlider関数で使用しても機能しません。誰か助けてもらえますか?それは私には理解できないような単純な問題だと確信しています。
HTML
<ul class="slider" id="1-slider">
<li><img src="http://dummyimage.com/490x340" alt="#" /></li>
<li><img src="http://dummyimage.com/490x340" alt="#" /></li>
<li><img src="http://dummyimage.com/490x340" alt="#" /></li>
</ul> <!-- .images -->
<div class="slider_menu"></div>
jQuery
var sliderHeight = "100px";
$('.slider').each(function() {
var current = $(this);
current.attr("box_h", current.height());
});
$('.slider').css("height", sliderHeight);
$(".slider_menu").html('<a href="#" class="expand">Expand</a>');
$(".slider_menu a").click(function() {
openSlider();
return false;
});
function openSlider() {
var open_height = $('.slider').attr("box_h") + "px";
$('.slider').animate({
"height": open_height
}, {
duration: "slow"
});
$(".slider_menu").html('<a href="#" class="expand">Collapse</a>');
$(".slider_menu a").click(function() {
closeSlider();
});
return false;
}
function closeSlider() {
$('.slider').animate({
"height": sliderHeight
}, {
duration: "slow"
});
$(".slider_menu").html('<a href="#" class="expand">Expand</a>');
$(".slider_menu a").click(function() {
openSlider();
});
return false;
}