新手切换问题

时间:2011-04-16 17:22:17

标签: jquery toggle

我在这里缺少什么?当我点击'h2 a'链接时,.content ol应该切换。我无法弄清楚它为什么不起作用:(

<script type="text/javascript">
$(document).ready(function(){
$(".content ol").hide();
$(".content h2 a").click(function(){
$(this).find(".content ol").toggle(400);
});
});
</script>

  <div class="content"> 
    <h2><a href="#">click me</a></h2>
    <ol>
      <p>Some text</p>
    </ol> 
  </div>

2 个答案:

答案 0 :(得分:1)

问题是find查找的元素是当前所选元素的后代。您正在this内查看,这是点击的链接。显然,ol不在a元素中。

您需要使用closest,将树向上移至div,然后仅然后使用find

$(".content h2 a").click(function(){
    $(this).closest('.content').find("ol").toggle(400);
});

答案 1 :(得分:0)

@andy,我已经创建了一个jsfiddle,可以为你清理一下幻灯片。应该适用于所有现代浏览器。

http://jsfiddle.net/9QgmQ/3/

$(document).ready(function(){
    $(".content ol").hide();
        $(".content h2 a").click(function(){
        $('.content').find(" ol").slideToggle(400);
    });
});

您可能需要考虑使用$。(object).slideToggle()而不是toggle()来进行平滑的向上/向下切换。