使用jQuery查找下一个div并显示/隐藏它

布雷特·戴维斯(Brett Davis)

我正在开发一个列出产品/子产品的应用程序。我想在显示人字形时显示子产品。由于某种原因,我无法使它正常工作。我已经能够使人字形翻转正常工作。

这是我的代码:

<div class="item">
    Product 1
    <div style="float: right;"><i class="fas fa-fw fa-chevron-down" onclick="expand(this,event)"></i></div>

    <div class="sub-item-list" style="display: none">            
        <div class="sub-item">
            Sub Product 1
        </div> 
    </div>
</div>

function expand(event) {
    if ($(event).hasClass("fa-chevron-down")){
        setTimeout(function () {///workaround
            $(event).removeClass("fa-chevron-down");                
        }, 10);
                      
        $(event).addClass("fa-chevron-up"); 
        $(event).closest('div').next().find("sub-item-list").css('display', 'inherit');

    } else {
        setTimeout(function () {///workaround
            $(event).removeClass("fa-chevron-up");                
        }, 10);

        $(event).addClass("fa-chevron-down");
        $(event).closest('div').next().find("sub-item-list").css('display', 'none');
    }
};

有人可以告诉我问题是什么吗?

萨拉夫(Madhav Saraf)

onclick<i>标签上设置事件时,您也可以调用parent().next()method而不是closest()获取子项/产品。

试试这个例子:

function expand(event)
{
    if ($(event).hasClass("fa-chevron-down"))
    {
        setTimeout(function() 
        {///workaround
            $(event).removeClass("fa-chevron-down");                
        }, 10);
                      
        $(event).addClass("fa-chevron-up"); 
        $(event).parent().next().css("display", "block");

    } 
    else 
    {
        setTimeout(function () 
        {///workaround
            $(event).removeClass("fa-chevron-up");                
        }, 10);
    
        $(event).addClass("fa-chevron-down");
        $(event).parent().next().css('display', 'none');
    }
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="item">
    Product 1
    <div style="float: right;">
        <i class="fas fa-fw fa-chevron-down" onclick="expand(this, event)">Toggle Chevron</i>
    </div>

    <div class="sub-item-list" style="display:none">            
        <div class="sub-item">
            Sub Product 1
        </div> 
    </div>
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章