代码之家  ›  专栏  ›  技术社区  ›  janosrusiczki

列表不想切换

  •  0
  • janosrusiczki  · 技术社区  · 15 年前

    我有一个(语义错误的)HTML,如下所示:

    <ul>
    <li class="year">2009</li>
    <li><a href="project1.html">Project 1</a></li>
    <li><a href="project2.html">Project 2</a></li>
    <li><a href="project3.html">Project 3</a></li>
    </ul>
    
    <ul>
    <li class="year">2008</li>
    <li><a href="project4.html">Project 4</a></li>
    <li><a href="project5.html">Project 5</a></li>
    <li><a href="project6.html">Project 6</a></li>
    </ul>
    
    <ul>
    <li class="year">2007</li>
    <li><a href="project7.html">Project 7</a></li>
    <li><a href="project8.html">Project 8</a></li>
    <li><a href="project9.html">Project 9</a></li>
    </ul>
    

    像这样的jquery脚本:

    $(function() {
        $('.year').click(function() {
            $('ul').find('li:not(.year)').slideUp('fast');
            $(this).closest('ul').find('li:not(.year)').toggle('fast');
        })
    })
    

    它几乎可以根据需要工作。默认所有 ul li -除了那些有学年的学生,S是隐藏的。当用户单击一年时,任何打开的一年的链接都会向上滑动,单击的一年的链接也会向下滑动。问题是,如果我单击打开的年份,它首先向上滑动(被第一行截获),然后通过切换行向下滑动。我希望它保持关闭与幻灯片上行线,而不是截取目前点击的一年。

    希望这是有道理的。

    感谢您的帮助。

    2 回复  |  直到 15 年前
        1
  •  1
  •   stefita    15 年前

    可能你应该用 :hidden :visible 用于区分已显示内容的选择器。

    $(function() {
        $('.year').click(function() {
            $('ul').find('li:not(.year)').slideUp('fast');
            $(this).closest('ul').find('li:not(.year):hidden').toggle('fast');
        })
    })
    
        2
  •  0
  •   AJM    15 年前

    在:not的Therms中,您只能使用filter而不是在此处查找表达式,这不是真的吗?例如:not(:blah)或:not([blah]但不是:not(.blah)?