在jQuery上:有很多项目显示只有这个锚点的div被点击

时间:2009-11-01 12:51:34

标签: jquery hide show html

首先:抱歉我的英文

我有一个这样的网页

<div class="item"><div class="details">
<ul>
<li><a href="#">Show div 1</a></li>
<li><a href="#">Show div 2</a></li>
<li><a href="#">Show div 3</a></li>
</ul>
<div>div 1</div>
<div>div 2</div>
<div>div 3</div>           </div></div>

重要提示:我有几个名为'item'的div。

我有这个jquery脚本

$(document).ready(function() {
  $('ul > li > a').each(function(index) {
  $(this).click(function() {
  $('.details > div:eq(' + index + ')').toggle()
  .siblings('.details > div').hide();
  });
  });
});

但如果我点击'a',它会显示所有项目的相对'div'。 我喜欢如果我点击第一个元素的第一个'a',它会显示第一个ONLY项目的第一个'div',而不是所有项目。

这是一个测试页link text (:O它仅适用于第一个div上的链接!)

我希望能够清楚......

全部谢谢

2 个答案:

答案 0 :(得分:2)

编辑,哎哟! INDEX搞砸了,div:eq(' + index + ')一直在寻找第一个项目div的第一,第二和第三个元素,试试这个:

$(document).ready(function() {
  $('ul > li > a').each(function(index) {
    $(this).click(function() {
        $(this).closest('.item').siblings().find('.details > div').hide();
        $('.item .details div:eq(' + index + ')').toggle();
    });
  });
});

尝试采用更简单的解决方案,例如@Dave Beer's。

答案 1 :(得分:2)

如果你能够为div和链接添加一个class属性。

<div class="item"><div class="details">
<ul>
<li><a href="#" id="div1">Show div 1</a></li>
<li><a href="#" id="div2">Show div 2</a></li>
<li><a href="#" id="div3">Show div 3</a></li>
</ul>
<div class="div1">div 1</div>
<div class="div2">div 2</div>
<div class="div3">div 3</div>           </div></div>

然后,你的jQuery可以像下面那样简单:

$(document).ready(function() {
  $('ul > li > a').click(function(){
          $('#details > div').hide(); // hide all of the divs
          $('div.' + this.id).show(); // then show the one with the same class as the link.id that was clicked
       });
    });