【问题标题】:How to make a dropdown button stay open after clicking on content?单击内容后如何使下拉按钮保持打开状态?
【发布时间】:2013-12-07 14:38:49
【问题描述】:

我有这个下拉按钮http://fiddle.jshell.net/65q4r/

现在我正在努力实现两件事:

  1. 单击下拉链接或下拉列表中的任何位置时 保持打开状态。
  2. 在同一页面中有两个独立工作。

谢谢大家!!

【问题讨论】:

  • if (e.target==this) 会告诉您该元素是否是您单击的实际元素,而不是父元素

标签: javascript jquery css button drop-down-menu


【解决方案1】:

对 JS 的两个小调整:http://fiddle.jshell.net/65q4r/7/

第 4-5 行:

$('.clicker').click(function(e) {
    $('+ ul', $(this)).slideToggle(200);

并添加了这个处理程序:

$('.click-nav > ul ul a').click(function(e) {
    e.stopPropagation();
});

还在 html 中添加了第二个按钮以进行演示。

【讨论】:

    【解决方案2】:

    这是你想要的吗?

    http://fiddle.jshell.net/65q4r/6/

    这是 HTML:

    <div class="click-nav">
        <ul class="no-js">
            <li>
                <a href="#" class="clicker">Dropdown Button</a>
                <ul>
                    <li><a href="#">Link1</a></li>
                    <li><a href="#">Link2</a></li>
                    <li><a href="#">Link3</a></li>
                    <li><a href="#">Link4</a></li>
                </ul>
            </li>
        </ul>
    </div>
    <div class="click-nav">
        <ul class="no-js">
            <li>
                <a href="#" class="clicker">Dropdown Button</a>
                <ul>
                    <li><a href="#">Link1</a></li>
                    <li><a href="#">Link2</a></li>
                    <li><a href="#">Link3</a></li>
                    <li><a href="#">Link4</a></li>
                </ul>
            </li>
        </ul>
    </div>
    

    CSS:

    .price {
        color: #820C8E;
        font-size: 15px !important;
        font-weight: bold
    }
    
    .click-nav {
        float:left
    }
    .click-nav ul {
        float:left;
        position: relative;
        font-weight: 400;
        margin-top: -6px;
        margin-bottom:0;
        font-size:14px
    }
    .click-nav ul li {
        position: relative;
        list-style: none;
        cursor: pointer;
    }
    .click-nav ul li ul {
        position: absolute;
        left: 0;
        right: 0;
        z-index: 9999;
    }
    .click-nav ul .clicker {
        position: relative;
        color: #494949;
    }
    .click-nav ul .clicker:hover, .click-nav ul .active {
    }
    .click-nav img {
        position: absolute;
        top: 6px;
        left: 0;
    }
    .click-nav ul li a {
        display: block;
        padding: 0 10px 0 22px;
        background: #FFF;
    }
    .click-nav ul li li a{
        transition: background-color 0.2s ease-in-out;
        -webkit-transition: background-color 0.2s ease-in-out;
        -moz-transition: background-color 0.2s ease-in-out;
        display: block;
        padding: 0 62px 0 22px;
        background: #ccc;
    }
    .click-nav ul li a:hover {
    }
    /* Fallbacks */
    .click-nav .no-js ul {
        display: none;
    }
    .click-nav .no-js:hover ul {
        display: block;
    }
    

    JavaScript:

    $(document).ready(function() {
        $('.click-nav > ul').toggleClass('no-js js');
        $('.click-nav .js ul').hide();
        $('.click-nav .clicker').click(function(e) {
            $(this).parent().find("ul").slideToggle(200);
            $(this).toggleClass('active');
            if($(e.target).attr('href') == '#') {e.preventDefault();}
    e.stopPropagation();
            e.stopPropagation();
        });
        $('*:not(.click-nav):not(.click-nav *)').click(function (e) {
            $(".js ul").slideUp(200);
            $(".clicker").removeClass('active');
            e.stopPropagation();
        });
    });
    

    【讨论】:

    • 太棒了。差不多好了。我只需要像在我的演示中一样在外部单击时将其关闭。谢谢!
    • @user1628193 好了。
    • 现在当我点击按钮时它消失了。是同一个小提琴链接吗?
    • @user1628193 我修改了答案。
    • 点击链接时它仍然关闭。但不用担心,因为我现在有一个有效的答案。非常感谢;)
    猜你喜欢
    • 2019-10-04
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多