javascript - 用于多列列表的 JQuery slideToggle

标签 javascript jquery html css list

我有一个宽度为 li 33% 的大列表,所以有 3 列。

computers   monitors   hi-fi
sex-toys    pancakes   scissors

在每一个里面都有隐藏的UL,点击slideToggle。

JQuery

$('.subCategory > .parentleaf:has(ul) > .categoryicon').click(function() {
    $(this).siblings('ul').slideToggle('fast');
    });

没有按我的意愿滑动的问题,他们每次都rebuld list,像这样

computers   monitors   hi-fi
[li]cars    sex-toys   pancakes
[li]dogs    scissors

我想这样滑动它们:

computers   monitors   hi-fi
[li]cars    pancakes   scissors
[li]dogs
sex-toys       

我怎样才能做到这一点?

jsFiddle

jsFiddle 2 - 在这种情况下需要红色 bg 颜色为 3 列

最佳答案

我在每三个li之间添加了一个clearer div

<ul class="subCategory">
    <li class="parentleaf">
        <span class="categoryicon">click</span>
        <span class="categoryname">Cars</span>
        <ul class="submenu">
            <li><a href="#">Car 1</a></li>
            <li><a href="#">Car 2</a></li> 
            <li><a href="#">Car 3</a></li>
            <li><a href="#">Car 4</a></li>
        </ul>
    </li>
    <li class="parentleaf">
        <span class="categoryicon">click</span>
        <span class="categoryname">Phones</span>
        <ul class="submenu">
            <li><a href="#">Phone 1</a></li>
            <li><a href="#">Phone 2</a></li> 
            <li><a href="#">Phone 3</a></li>
            <li><a href="#">Phone 4</a></li>
        </ul>
    </li>  
    <li class="parentleaf">
        <span class="categoryicon">click</span>
        <span class="categoryname">Guns</span>
        <ul class="submenu">
            <li><a href="#">Gun 1</a></li>
            <li><a href="#">Gun 2</a></li> 
            <li><a href="#">Gun 3</a></li>
            <li><a href="#">Gun 4</a></li>
        </ul>
    </li>   
    <div class="clearer"></div>
    <li class="parentleaf">
        <span class="categoryicon">click</span>
        <span class="categoryname">Notebooks</span>
        <ul class="submenu">
            <li><a href="#">Notebook 1</a></li>
            <li><a href="#">Notebook 2</a></li> 
            <li><a href="#">Notebook 3</a></li>
            <li><a href="#">Notebook 4</a></li>
        </ul>
    </li>   

CSS

.clearer
{
    clear:both; 
}

您还可以获得当前点击的 li 的索引,并通过一些数学运算在点击时添加更清晰的 div 并在需要时将其删除,但我认为没有必要这样做

关于javascript - 用于多列列表的 JQuery slideToggle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14953846/

相关文章:

javascript - 如何在 Puppeteer 中设置最大视口(viewport)?

javascript - jQuery 和实时操作

javascript - 搜索时jquery select2自定义javascript函数

html - 我想在鼠标结束时更改颜色并在鼠标离开时返回它(html)?

javascript - Google Adsense javascript代码阻止了我的其他js脚本

javascript - EventListener 没有被删除并再次添加,这有问题吗?

javascript - jQuery toggleClass fade 适用于一个类,而不适用于另一个类?

javascript - 使用 jQuery 更改第一个跨度的文本

javascript - 需要我的 document.write 和我的点击按钮在同一行吗?

jquery - AJAX 加载页面中的 Fancybox 'iframe'