0

我有一个带有图像缩略图的轮播。单击时,它们会显示相应的 div 并隐藏所有其他 div。现场直播网站。

当前脚本有效,除了我现在有大约 30 个 div 和相应的缩略图而不是 3 个,并且客户端可以通过 WordPress 添加更多。因此,我需要一种更简单的方式来表示“隐藏除选定的所有 div 之外的所有 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();
});
4

2 回答 2

1

anchor我建议,您为此使用 div 'carousel'的 children() 的点击事件。单击时,首先将所有元素 ( div) 隐藏在 'content'div中。然后使用 ' this' 对象来获取被点击的锚点的索引。之后使用该索引显示当前的 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/

于 2013-02-26T05:18:13.603 回答
0

您可以使用.siblings()

$('.carousel a').click(function() {
    $('.content div').eq($(this).index()).show().siblings().hide();
});
于 2013-02-26T03:54:36.043 回答