显示/隐藏相应div的Javascript Carousel。 jQuery函数隐藏所有除了选中

时间:2013-02-26 03:47:53

标签: jquery show-hide

我有一个带有图像缩略图的旋转木马。单击时,它们会显示相应的div并隐藏所有其他div。 Live Site Here.

当前脚本有效,除了我现在有大约30个div和相应的缩略图而不是3,客户端可以通过WordPress添加更多。所以我需要一个更简单的方法来说“隐藏所有div除了所选的那个”而不使用实际的div数。

HTML:

 <div class="carousel">
<a id="lnk1"><img src="images/projects/game1.jpg" /></a>
<a id="lnk2"><img src="images/projects/game2.jpg" /></a>
<a id="lnk3"><img src="images/projects/game3.jpg" /></a>
</div>

<div class="content">
<div id="div1">div1</div>
<div id="div2">div2</div>
<div id="div3">div3</div>
</div>

当前Javascript:

$(document).ready(function() {
    var h1 = $("#div1").height();
    var h2 = $("#div2").height();
    var h3 = $("#div3").height();
$("#div1,#div2,#div3").height(Math.max(h1, h2, h3));
$("#div2,#div3").hide();

$("#lnk1").live('click', function() {
    $("#div1").show();
    $("#div2,#div3").hide();
});

$("#lnk2").live('click', function() {
    $("#div2").show();
    $("#div1,#div3").hide();
});

$("#lnk3").live('click', function() {
    $("#div3").show();
    $("#div1,#div2").hide();
});

2 个答案:

答案 0 :(得分:1)

我建议您使用div'轮播'的子项(anchor)的click事件。点击后,首先隐藏“内容”div中的所有元素(div)。然后使用“this”对象获取cliked锚点的索引。之后使用该索引显示相应的div。在这里你可以看到索引是连接两者的一件事。所以你必须在两者中保持相同的顺序。

<强> HTML

<div class="carousel" >
<a id="lnk1" >image 1</a>
<a id="lnk2" >image 2</a>
<a id="lnk3" >image 3</a>
<a id="other1" >image 4</a>   
<a id="other2" >image 5</a>  
</div>
<div class="content">
<div id="div1">div1</div>
<div id="div2">div2</div>
<div id="div3">div3</div>
<div id="other_div1">div4</div>
<div id="other_div2">div5</div>
</div>

<强>的jQuery

$(".carousel > a").live('click', function() {
    $(".content > div").hide(); //hide all divs
    $(".content > div").eq($(this).index()).show();//display curresponding div of the clicked anchor
});

http://jsfiddle.net/arjuncc/3nMgA/4/

答案 1 :(得分:0)

您可以使用.siblings()

$('.carousel a').click(function() {
    $('.content div').eq($(this).index()).show().siblings().hide();
});