Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将跨度附加到<;李>;如果存在子菜单_Javascript_Jquery_Html_Append - Fatal编程技术网

Javascript 如何将跨度附加到<;李>;如果存在子菜单

Javascript 如何将跨度附加到<;李>;如果存在子菜单,javascript,jquery,html,append,Javascript,Jquery,Html,Append,我正在尝试构建一个响应迅速的导航,并希望在包含子菜单的所有顶级菜单项中添加一个。出于某种原因,这只是将跨度附加到所有项目上,有人能解释一下原因吗 以下是标记: <nav class="nav"> <ul class="nav-list"> <li class="nav-item"> <a href="#">Home</a> <ul class="nav-sub

我正在尝试构建一个响应迅速的导航,并希望在包含子菜单的所有顶级菜单项中添加一个。出于某种原因,这只是将跨度附加到所有项目上,有人能解释一下原因吗

以下是标记:

<nav class="nav">
    <ul class="nav-list">
        <li class="nav-item">
            <a href="#">Home</a>
            <ul class="nav-submenu">
                <li class="nav-submenu-item">
                    <a href="#">Submenu item 1</a>
                </li>
                <li class="nav-submenu-item">
                    <a href="#">Submenu item 2</a>
                </li>
                <li class="nav-submenu-item">
                    <a href="#">Submenu item 3</a>
                </li>
                <li class="nav-submenu-item">
                    <a href="#">Submenu item 4</a>
                </li>
            </ul>
        </li>
        <li class="nav-item">
            <a href="#">About</a>
        </li>
        <li class="nav-item">
            <a href="#">Services</a>
        </li>
        <li class="nav-item">
            <a href="#">Portfolio</a>
        </li>
        <li class="nav-item">
            <a href="#">Testimonials</a>
        </li>
        <li class="nav-item">
            <a href="#">Contact</a>
        </li>
    </ul>
</nav>

您可以看到第一项有一个下拉列表,我想在每个包含子菜单的
  • 中动态添加一个span元素

    和脚本(jQuery):

    $。每个($('.nav项'),函数(索引,值){
    如果($('.nav项')。子项('ul')。长度>0){
    添加($('');
    }
    });
    
    谢谢你的帮助

    试试这个

    $.each($('.nav-item'), function (index, value) {
        if ($(this).children('ul').length > 0) {
            $(this).append($('<span class="nav-click"></span>'));
        }
    });
    
    这将始终选择第一个
    。找到导航项目

    当您在每个
    导航项目中循环时,您需要使用

    if ($(this).children('ul').length > 0) {
    

    实际上,这就是你所需要的:

    $('.nav-item:has(ul)').append('<span class="nav-click" />');
    

    我离得太近了!谢谢,我会在计时器用完时接受这个。谢谢!这是否适用于每个ul的span类?假设有一个三层菜单?@Halcyon21在这种情况下使用
    $('nav-li:has(ul)')。前置(“”)是否仍然可以使用.has()而不是伪选择器执行此操作?我想尽可能多地使用我的课程:-)@Halcyon21当然!,你试过了吗<代码>$('nav li')。具有('ul')。前置(''$('.nav项')。具有('ul')。前置('');工作完美!谢谢
    
    if ($(this).children('ul').length > 0) {
    
    $('.nav-item:has(ul)').append('<span class="nav-click" />');
    
    $('nav li:has(ul)').append('<span class="nav-click" />');