2

我有这个 HTML 结构:

<ul>

    <li class="cat-item">
        <a href="link.html">Link</a>
    </li>

    <li class="subcat-item" style="display: none">
        <ul class="subcat-list">
        </ul>
    </li>

    <li class="cat-item">
        <a href="link2.html">Link2</a>
    </li>

    <li class="subcat-item" style="display: none">
        <ul class="subcat-list">

            <li class="subcat-list-item"><a href="link3.html">Link 3</a></li>
            <li class="subcat-list-item"><a href="link4.html">Link 4</a></li>
            <li class="subcat-list-item"><a href="link5.html">Link 5</a></li>

        </ul>
    </li>



</ul>

现在我想做的是:

如果(在 li.cat-item 之后,类 .subcat-item 的下一个元素具有子 ul.subcat-list 并且此 ul.subcat-list 具有子级)当您单击此 .cat-item 时,li.subcat-item slideToggles 和返回 false(页面未重新加载)

否则,当您单击此 .cat-item 时,会出现以下功能:window.location = this.href;

很简单:如果类别有子类别 slideToggle 带有子类别链接的列表。如果类别没有子类别,请转到类别链接。

有什么帮助吗?

// 编辑

感谢您的回答。还有一个我无法处理的步骤。这是HTML:

 <ul>

     <li class="cat-item">

         <a href="link.html">Link</a>

     </li> <!-- cat-item -->

     <li class="subcat-item" style="display: none;">

         <ul class="subcat-list">        

         </ul> <!-- subcat-list -->

     </li> <!-- subcat-item -->

     <li class="cat-item">

         <a href="link.html">Link</a>

     </li> <!-- cat-item -->    

     <li class="subcat-item" style="display: none;">

        <ul class="subcat-list">

            <li class="subcat-list-item">

                <a href="link.html">Link</a>

            </li> <!-- subcat-list-item -->

            <li class="sub-subcat-item" style="display: none;">

                <ul class="sub-subcat-list">

                </ul> <!-- sub-subcat-list -->

            </li> <!-- sub-subcat-item -->

            <li class="subcat-list-item">

                <a href="link.html">Link</a>

            </li> <!-- subcat-list-item -->

            <li class="sub-subcat-item" style="display: none;">

                <ul class="sub-subcat-list">

                    <li class="sub-subcat-list-item">

                        <a href="link.html">Link</a>

                    </li> <!-- sub-subcat-list-item -->

                    <li class="sub-subcat-list-item">

                        <a href="link.html">Link</a>

                    </li> <!-- sub-subcat-list-item -->

                </ul> <!-- sub-subcat-list -->

            </li> <!-- sub-subcat-item -->

        </ul> <!-- subcat-list -->

     </li> <!-- subcat-item -->   

 </ul>

所以现在:当用户点击 .subcat-list-item 并且下一个具有 .sub-subcat-item 类的元素没有子元素(没有 li 的 ul)时,他应该转到 .subcat-list-item url。否则 .sub-subcat-item 应该滑动切换。

4

2 回答 2

0

尝试

jQuery(function($){
    $('.cat-item').filter(function(){
        return $(this).next('.subcat-item').has('li').length > 0
    }).click(function(e){
        e.preventDefault();
        $(this).next('.subcat-item').toggle();
    })
})

演示:小提琴

于 2013-08-31T15:20:46.333 回答
0

尝试

$('.cat-item').click(function (e) {
    var x = $(this).next('.subcat-item').children('.subcat-list').children('.subcat-list-item');
    console.log(x.length);
    if (x.length > 1) {
        e.preventDefault();
        x.closest('.subcat-item').slideToggle();
    }
});

演示

在操作更新问题后更新

$('.subcat-list-item').click(function (e) {
    var x = $(this).next('.sub-subcat-item').children('ul').children('li');
    console.log(x.length);
    if (x.length != 0) {
        e.preventDefault();
        $(this).next('.sub-subcat-item').slideToggle();
    }
});

演示

于 2013-08-31T15:26:34.907 回答