我有这样的导航的html结构。它正在动态创建导航。

<div class="main">
   <ul>
        <li>
            <a href="">Media Centre</a>
            <div class="cbp-hrsub">
                <div class="cbp-hrsub-inner">
                    <div>
                        <ul>
                            <li><a href="">Vision And Mission</a></li>
                            <li><a href="">Strategic Goals</a></li>
                            <li><a href="">Task of the Department</a></li>
                        </ul>
                    </div>
                    <div>
                    </div>
                </div>
            </div>
        </li>
        <li><a href="">Contact</a>
            <div class="cbp-hrsub">
                <div class="cbp-hrsub-inner">
                    <div>
                        <ul>
                        </ul>
                    </div>
                    <div>
                    </div>
                </div>
            </div>
        </li>
    </ul>
</div>


在这里,第一个具有ul和li子项的li(子菜单)。但是第二个li没有子菜单,但是div显示在前端。菜单和子菜单以编程方式出现,因此我无法删除div cbp-hrsub。当li没有孩子时,我需要不更改div显示。

我试过了:

 <script type="text/C#">
        $(document).ready(function(){
        $('.main ul>li>a').mouseover(function(){
        if($(this).closest("li").children("ul").length==0) {
       $('.cbp-hrsub').css("display", "none");
   }
        });
        });
    </script>


像这样,但是div没有显示任何效果。

最佳答案

如果要在鼠标悬停之前隐藏它们,只需在dom ready处理程序中添加以下内容

$('.main .cbp-hrsub').not(':has(li)').hide()


其他

$(document).ready(function () {
    $('.main ul>li>a').mouseover(function () {
        var $li = $(this).closest("li").children("ul");
        if ($(this).closest("li").children("ul").length == 0) {
            $li.find('.cbp-hrsub').hide();
        }
    });
});

关于javascript - 使用jQuery在Li中隐藏一个div,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28360403/

10-11 22:46
查看更多