代码之家  ›  专栏  ›  技术社区  ›  Jamie Taylor

如果下面没有div,则隐藏标题

  •  1
  • Jamie Taylor  · 技术社区  · 14 年前

    我有一些像这样的层次

    <div class="evenprop">some prop</div>
    <div class="evenprop">some prop2</div>
    <div class="evenprop">some prop3</div>
    
    <h3 class="otherprop">Other Props</h3>
    
    <div class="evenprop">some prop4</div>
    <div class="evenprop">some prop5</div>
    

    这很好,但是如果数据看起来像这样,我需要隐藏“otherprop”类

    <div class="evenprop">some prop</div>
    <div class="evenprop">some prop2</div>
    <div class="evenprop">some prop3</div>
    <div class="evenprop">some prop4</div>
    <div class="evenprop">some prop5</div>
    
    <h3 class="otherprop">Other Props</h3>
    

    层是动态放置的,所以不知道如何做到这一点,我需要说,如果类“otherprop”下面没有数据,那么隐藏“otherprop”如果这是有意义的

    如果没有以下数据,则为所需结果

    <div class="evenprop">some prop</div>
    <div class="evenprop">some prop2</div>
    <div class="evenprop">some prop3</div>
    <div class="evenprop">some prop4</div>
    <div class="evenprop">some prop5</div>
    

    <div class="evenprop">some prop</div>
    <div class="evenprop">some prop2</div>
    <div class="evenprop">some prop4</div>
    <div class="evenprop">some prop5</div>
    
    <h3 class="otherprop">Other Props</h3>
    
    <div class="evenprop">some prop3</div>
    

    非常感谢

    杰米

    4 回复  |  直到 14 年前
        1
  •  0
  •   Vinay B R    14 年前

    试试这个

    var nxtSib = document.getElementsByClassName('otherprop')[0].NextSibling;
    if(nxtSib != 'evenprop')
        nxtSib.style.display = 'none';
    
        2
  •  0
  •   Russell Davis    14 年前

    在CSS中尝试以下操作:

    .otherprop:last-child {
      display: none;
    }
    
        3
  •  0
  •   sharat87    14 年前

    无论何时动态更改那里的数据,您都可以检查是否存在这样的东西,例如。。。

    var op = $('.otherprop');
    if(op.nextAll('div').length) {
        op.show();
    else {
        op.hide();
    }
    

    而不是使用 op.show() op.hide() ,我也建议使用 op.addClass('available') op.removeClass('available') 附带以下css

    .otherprop {
        display: none;
    }
    .otherprop.available {
        display: block;
    }
    

    未经测试,但应该有效。

        4
  •  0
  •   Jamie Taylor    14 年前

    谢谢你的回答,但这就是我最终得到理想结果的原因

    if ($('.property > .evenprop').is(':visible')){
                $('.otherprop').show();
            } else {
                $('.otherprop').hide();
            }