【问题标题】:Show icon only if sub menu exists仅在子菜单存在时显示图标
【发布时间】:2017-10-19 07:25:16
【问题描述】:

在我的平板电脑导航中有一些“加号”图标来切换子菜单。我只想在子菜单存在时显示加号图标。

我已经用这个代码试过了:

        if($('.tablet-li-item').find('.tablet-sub-menu').length !== 0) {
        $(this).children('.open-btn').css('display', 'block');
    }

HTML:

<ul class="tablet-nav">
        {% for menuItem in menu.menuStructure %}
            <li class="tablet-li-item">
                {{ render( controller( "ez_content:viewLocation", {"locationId": menuItem.location.id, "viewType": "menu"} ) ) }}
                <i class="fa fa-caret-down open-btn" aria-hidden="true"></i>
                <div class="arrow"></div>
                {% if menuItem.submenu|length > 0 %}
                    <ul class="tablet-sub-menu" hidden>
                        <div class="inner-tablet-sub-menu">
                        {% for submenu in menuItem.submenu %}
                            <li class="tablet-sub-li-item">
                                {{ render( controller( "ez_content:viewLocation", {"locationId": submenu.location.id, "viewType": "menu"} ) ) }}
                            </li>
                        {% endfor %}
                        </div>
                    </ul>
                {% endif %}
            </li>
        {% endfor %}
    </ul>

此解决方案仅在我悬停/单击对象时才有效,不幸的是,此解决方案不适用于这种情况,因为它是平板电脑菜单。

也许有人可以帮我解决这个问题。

编辑:

现在我明白了,我用 jquery 函数 has()addClass() 试了一下

$('.tablet-li-item').has('ul').children('.open-btn').addClass('active');

除了addClass()show() 也是一种可能的解决方案。

【问题讨论】:

  • $(this) 的作用域是什么。我们需要更多您的代码来帮助您。请同时粘贴您的 html 设置。
  • 我添加了html
  • 谢谢。但是您的编辑中仍然没有 $(this) 的范围。您的 if 语句不会将 jQuery 放在 this 指向任何东西的范围内。

标签: javascript android jquery html css


【解决方案1】:

我的猜测是你的错在$(this) 范围之外。

你可以试试这个:

$(document).ready(function(){
    $('.tablet-li-item').each(function(){
        if( $(this).find('.tablet-sub-menu').length > 0 ){
            $(this).children('.open-btn').css('visibility', 'visible');
        }
    });
});

【讨论】:

  • 感谢您的回答,不幸的是按钮没有显示,我真的不知道为什么^^
  • 您检查过元素是否有任何 css 阻止它们显示?
  • 是的,我有,'open-btn'的默认值是'visibility: hidden',这应该被jquery函数覆盖,但它没有
  • 嗯,这就解释了。设置 display: block ,只要它们有 visibility:hidden 就不会做任何事情。然后需要将可见性设置为可见性:可见。 stackoverflow.com/questions/7204494/…
  • 是的,现在我也明白了。谢谢你的帮助! :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-30
  • 2017-09-30
  • 1970-01-01
  • 2017-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多