Javascript jquery如何对不存在的其他元素隐藏单个元素

Javascript jquery如何对不存在的其他元素隐藏单个元素,javascript,jquery,html,toggle,show-hide,Javascript,Jquery,Html,Toggle,Show Hide,我正在一个带有(单菜单)和(子菜单)的侧边栏上工作 包含(子菜单)的菜单具有(+-)切换,而包含单选菜单的菜单没有任何切换 如何对其他类似元素隐藏单个菜单的(+-) 我试过这种方法,它为所有人隐藏 HTML <div class="multitoggle"> <ul id="accordions"> <li class="nav-parents"> <div class="link"> <spa

我正在一个带有(单菜单)和(子菜单)的侧边栏上工作

包含(子菜单)的菜单具有(+-)切换,而包含单选菜单的菜单没有任何切换

如何对其他类似元素隐藏单个菜单的(+-)

我试过这种方法,它为所有人隐藏

HTML

<div class="multitoggle">
    <ul id="accordions">
        <li class="nav-parents">
            <div class="link"> <span class="plus">+</span> <span class="minus">-</span> <a href="#">CURRENT ACCOUNTS</a></div>
            <ul class="submenu">
                <li><a href="../current/third-level.php">MPOWER CLASSIC</a></li>
                <li><a href="../current/third-level.php">MPOWER GOLD</a></li>
                <li><a href="../current/third-level.php">MPOWER PLATINUM</a></li>
            </ul>
        </li>
        <li class="nav-parents">
            <div class="link"> <span class="plus">+</span> <span class="minus">-</span> <a href="#">OUR SEGMENTS</a></div>
        </li>
    </ul>
</div>
实际上只有
has()
在这种情况下不起作用。您必须使用
not()
has()
的组合。您还错过了
子菜单
之前的点。你可以像下面这样做

$(window ).load(function(e) {
    $('.nav-parents').not(':has(.submenu)').find('.plus, .minus').css('display', 'none');
});
实际上只有
has()
在这种情况下不起作用。您必须使用
not()
has()
的组合。您还错过了
子菜单
之前的点。你可以像下面这样做

$(window ).load(function(e) {
    $('.nav-parents').not(':has(.submenu)').find('.plus, .minus').css('display', 'none');
});

您可以在css本身中执行此操作,因为div将是
最后一个子菜单
唯一的子菜单(如果没有子菜单)。所以你可以通过使用

.nav-parents > div.link:last-child > span{
  display:none;
}
.nav parents>div.link:last child>span{
显示:无;
}

  • + -
  • + -

您可以在css本身中执行此操作,因为如果没有子菜单,div将是
最后一个子项
唯一子项
。所以你可以通过使用

.nav-parents > div.link:last-child > span{
  display:none;
}
.nav parents>div.link:last child>span{
显示:无;
}

  • + -
  • + -

您的if语句在这里没有什么作用,因为当您运行此语句时:

$('.nav-parents').find('.plus, .minus').css('display', 'none');
它只需再次选择所有
.nav父母
,并隐藏他们的优点和缺点

要仅选择没有子菜单的导航父项,应使用以下jQuery代码:

$('.nav-parents').not(':has(.submenu)')
以下是您在代码段中工作的代码:

$(窗口)。加载(函数(e){
$(“.nav父项”)
.not(“:has(.submenu)”)
.find('.plus、.减号')
.hide();
});

  • + -
  • + -

您的if语句在这里没有什么作用,因为当您运行此语句时:

$('.nav-parents').find('.plus, .minus').css('display', 'none');
它只需再次选择所有
.nav父母
,并隐藏他们的优点和缺点

要仅选择没有子菜单的导航父项,应使用以下jQuery代码:

$('.nav-parents').not(':has(.submenu)')
以下是您在代码段中工作的代码:

$(窗口)。加载(函数(e){
$(“.nav父项”)
.not(“:has(.submenu)”)
.find('.plus、.减号')
.hide();
});

  • + -
  • + -

为什么不从没有子菜单的菜单中删除spans元素呢?它正在集成到Kentico cms中,cms在默认情况下会将所有侧栏视为相同的。因此,它在默认情况下添加(+-)。这就是为什么我需要为它编写自定义脚本that@SowemimoBamidele您的代码实际上是有效的,您只是忘记了子菜单中的
,因为您要查找的是类而不是元素,Azim的是一行,但更难阅读。否。只有dot不能使它工作@YanMayatskiy@Azim你是对的,我很确定他在做一个循环。你为什么不从没有子菜单的菜单中删除span元素呢?它正在集成到Kentico cms中,cms在默认情况下看到所有侧栏都是相同的。因此,它在默认情况下添加(+-)。这就是为什么我需要为它编写自定义脚本that@SowemimoBamidele您的代码实际上是有效的,您只是忘记了子菜单中的
,因为您要查找的是类而不是元素,Azim的是一行,但更难阅读。否。只有dot不能使它工作@YanMayatskiy@Azim你是对的,我很确定他在做循环。我想这只是一个例子,他可能有没有子菜单和最后一个菜单。我想这只是一个例子,他可能有没有子菜单和最后一个菜单。