如果您将其放置在下拉菜单中,然后将其包装在LI中,则折叠后它会消失。有谁知道如何解决这一问题?

<li>
    <ul class="menu">
        <li>
        <a href="#">Dropdown</a>
            <ul>
                <li><a href="#">Some Action 1</a></li>
                <li><a href="#">Some Action 2</a></li>
                <li><a href="#">Some Action 3</a></li>
                <li><a href="#">Some Action 4</a></li>
            </ul>
        </li>
    </ul>
<li>

JS
$(document).ready(function() {
    $('.menu').dropit();
});

小提琴:
https://jsfiddle.net/c5zv3of2/

最佳答案

这是dropit中的错误。

看看chrome开发工具中的小提琴,单击包装的下拉菜单时,dropit会将“ dropit-open”类添加到包装的LI中,因此最终得到以下html:

<li class="dropit-open">
    <ul class="menu dropit">
        <li class="dropit-trigger dropit-open">
        <a href="#">Dropdown</a>
            <ul class="dropit-submenu" style="">
                <li><a href="#">Some Action 1</a></li>
                <li><a href="#">Some Action 2</a></li>
                <li><a href="#">Some Action 3</a></li>
                <li><a href="#">Some Action 4</a></li>
            </ul>
        </li>
    </ul>
</li>


当您单击关闭的菜单时,dropit.js中的以下代码将删除该类并隐藏UL,而不仅仅是LI。

$(this).parents(settings.triggerParentEl).removeClass('dropit-open').find(settings.submenuEl).hide();


结果显示在下面的html中。 UL上的style="display: none;"是元凶。

<li class="">
    <ul class="menu dropit" style="display: none;">
        <li class="dropit-trigger">
        <a href="#">Dropdown</a>
            <ul class="dropit-submenu" style="display: none;">
                <li><a href="#">Some Action 1</a></li>
                <li><a href="#">Some Action 2</a></li>
                <li><a href="#">Some Action 3</a></li>
                <li><a href="#">Some Action 4</a></li>
            </ul>
        </li>
    </ul>
</li>


这很可能是由于dropit本身的错误所致。

实际上,dropit具有open github issue for this scenario

修复

在dropit.js中,更改

$(this).parents(settings.triggerParentEl).removeClass('dropit-open').find(settings.submenuEl).hide();




$('.dropit-open').removeClass('dropit-open').find('.dropit-submenu').hide();


这将从所有LI中删除dropit-open类,但仅隐藏实际上在子菜单下的LI。

关于javascript - 在li内使用dropit.js,导致列表折叠后消失,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29655710/

10-09 17:44