检测空列以修改Bootstrap 3网格

时间:2018-10-30 16:55:09

标签: jquery twitter-bootstrap

如何检测 Bootstrap列是否为空,以便应用偏移量类将其余非空列放在同一行的中心?

我的Bootstrap网格设置为 .col-md-4 .col-md-4 .col-md-4 。这些列无法更改,因此我需要使用JQuery方法。

我当前的代码检测一列是否为空,并根据有多少列为空,并添加偏移量类以使非空列居中对齐。这就是我想要的:

[...] [...]  [...]

   [...] [...]

这是我的代码,尽管如果两行或更多行的列为空,这是不正确的,那么将应用错误的偏移量,并且会出现如下所示的效果:

[...] [...]
   [...] [...]

当前的jQuery代码

var count = 0;

$('.section_2 .col-md-4').each(function()
{
    if( !$.trim( $(this).html() ).length )
    {
        count++;

        if (count == 1)
        {
            $(this).parent().find(".col-md-4:first-of-type")
                .addClass("col-md-offset-2");
        }
        else
        {
            $(this).parent().find(".col-md-4:first-of-type")
                .addClass("col-md-offset-4")
                .removeClass("col-md-offset-2");
        }
     }
});

jsfiddle上的示例

https://jsfiddle.net/DTcHh/95766/

1 个答案:

答案 0 :(得分:1)

有关此问题的一些注意事项:

1)空的Bootstrap网格列仍具有正的非零宽度,因此我们必须在其为空时将其隐藏。

2)您可以使用以下简化的条件检查元素是否为空:!$(this).html().trim()

现在,这是我解决您的问题的方法:

$('.row .col-md-4').each(function()
{
    if (!$(this).html().trim())
    {
       $(this).hide();
       var first = $(this).parent().find(".col-md-4:first-of-type");
       
       if (first.hasClass("col-md-offset-2"))
           first.removeClass("col-md-offset-2").addClass("col-md-offset-4");
       else
           first.addClass("col-md-offset-2");
    }
});
.col-md-4
{
  /* Helps to visualize the layout */
  border: 1px solid red;
}

.box
{
  height: 75px;
  background: #ddd;
  width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">

<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>


<div class="section_2">
  <div class="container">

    <!-- ROW 1 -->
    <div class="row">
      <div class="col-md-4">
        <div class="box">Box</div>
      </div>
      <div class="col-md-4">
        <div class="box">Box</div>
      </div>
      <div class="col-md-4">
        <div class="box">Box</div>
      </div>
    </div>

    <!-- ROW 2 -->
    <div class="row">            
      <div class="col-md-4">
        <div class="box">Box</div>
      </div>
      <div class="col-md-4">
      </div>
      <div class="col-md-4">
      </div>
    </div>

  </div>
</div>

<div class="section_2">
  <div class="container">

    <!-- ROW 3 -->
    <div class="row">
      <div class="col-md-4">
        <div class="box">Box</div>
      </div>
      <div class="col-md-4">
        <div class="box">Box</div>
      </div>
      <div class="col-md-4">
      </div>
    </div>

    <!-- ROW 4 -->
    <div class="row">
      <div class="col-md-4">
        <div class="box">Box</div>
      </div>
      <div class="col-md-4">
        <div class="box">Box</div>
      </div>
      <div class="col-md-4">
      </div>
    </div>

  </div>
</div>