javascript - 查询 - 通过 href 打开列表元素并显示选定的 div

标签 javascript jquery html panel slidetoggle

此演示:http://jsfiddle.net/vv7rL8xv/1/

我想通过链接 #test 显示我的 div,例如“<a href="#test">Click</a>

<ul>
    <li class="active">
        <a href="#test1">Lorem ipsum</a>
        <ul>
            <li><a href="#a">Lorem ipsum child</a></li>
            <li><a href="#b">Lorem ipsum child 2</a></li>
        </ul>
    </li>

    <li>
        <a href="#test2">Test text</a>
        <ul>
            <li><a href="#c">Text child</a></li>
            <li><a href="#d">Text child 2</a></li>
        </ul>
    </li>

    <li><a href="#x">List item</a></li>
    <li><a href="#y">List item next</a></li>
</ul>

<div id="test1">This is first div</div>
<div id="test2">This is second div</div>

JQUERY:

$(function () {

    $('div').hide();
    $('ul li ul').hide();
    $('ul li:first-child ul').show();
    $('div:first').show();

    $('ul > li').click(function() {

        $(this).children('ul').slideToggle();
        $('ul > li').not(this).children('ul').slideUp();

        $('ul > li').removeClass('active');
        $(this).addClass('active');

    });

    $('ul li > a').click(function(e){

        var href = $(this).attr("href");
        $(href).slideToggle().siblings('div').hide();

    });

});

现在我的代码有错误:

  • 点击列表项后,第二次点击 div 和子 ul 折叠。
  • 点击子 ul 上的链接后折叠和展开
  • 当来自 href 的 id 不存在时,则不隐藏事件的 div,例如“#test”

请帮助,查看演示和代码;)

最佳答案

尝试,

$(function () {
    $('div').hide();
    $('ul li ul').hide();
    $('ul li').click(function () {
        $(this).siblings('li').children('ul').hide('slow');
        var ul = $(this).children('ul');
        if (!ul.filter(':visible').length > 0) {
            ul.show('slow');
            $($(this).find('a').attr('href')).show('slow').siblings('div').hide();
        }
    })
});

DEMO

关于javascript - 查询 - 通过 href 打开列表元素并显示选定的 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26731732/

相关文章:

javascript - 简单的textarea字符串替换jquery脚本

jquery - 为什么下拉菜单隐藏在 jQuery 按钮后面?

javascript - 带有 Ajax 页面调用的 JQuery UI 选项卡中的另一个 JQuery 组件

javascript - 仅为一个 JS 文件动态加载 &lt;meta&gt; 属性

JavaScript 验证无法正确执行

javascript - 正则表达式 exp 将文字点 [.] 之后的每个字母更改为小写

javascript - 如何在 ios 中的 html 文件中查找 div 标记的计数?

javascript - 如何为特定的音频播放器编写JavaScript代码

jquery - 使用 jQuery 作为没有 data-main 属性的模块引导 RequireJS 应用程序

javascript - 如何根据数组中的数据动态更改其宽度