【问题标题】:Tab switching not working right on multiple cards选项卡切换无法在多张卡上正常工作
【发布时间】:2020-10-10 02:52:36
【问题描述】:

我正在创建一个应用程序,它会生成多张卡片,每张卡片上有 3 个标签。但是选项卡切换不能按预期工作。在第一张卡上执行此操作时,它工作正常,但是当我尝试按下其他卡选项卡时,它只会打开第一张卡。我无法绕开它。

$(document).on('click', '.navigation a', function(e) {
  e.preventDefault();
  $(this).tab('show');
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>

<div class="card-columns">
  <div class="card">
    <div class="card-header">
      <ul class="nav nav-tabs card-header-tabs navigation" role="tablist">
        <li class="nav-item">
          <a class="nav-link active" href=".info" role="tab" aria-controls="info" aria-selected="true" data-toggle="tab">Info</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href=".ingredients" role="tab" aria-controls="ingredients" aria-selected="false" data-toggle="tab">Ingredients</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href=".nutrition" role="tab" aria-controls="nutrition" aria-selected="false" data-toggle="tab">Nutrition information</a>
        </li>
      </ul>
    </div>

    <div class="card-body">
      <h4 class="card-title">Item name</h4>
      <div class="tab-content mt-3">
        <div class="tab-pane active info" role="tabpanel">
          <img src="https://images.pexels.com/photos/1279330/pexels-photo-1279330.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260" class="card-img-top" alt="">
          <div class="text-center">
            <a href="" target=_blank><button type="button" class="btn btn-primary">Full recipe</button></a>
            <a href=""><button type="button" class="btn btn-primary">Add to favorites</button></a>
          </div>
        </div>

        <div class="tab-pane ingredients" role="tabpanel" aria-labelledby="ingredients-tab">
          <h6 class="card-subtitle mb-2">Ingredient list</h6>
          <ul id=ingredientList>
            <li>Ingredient</li>
            <li>Ingredient</li>
            <li>Ingredient</li>
            <li>Ingredient</li>
          </ul>
        </div>

        <div class="tab-pane nutrition" role="tabpanel" aria-labelledby="nutrition-tab">
          <h6 class="card-subtitle mb-2">Nutrition information</h6>
          <ul id=nutritionInfo>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
          </ul>
        </div>
      </div>
    </div>
  </div>

  <div class="card">
    <div class="card-header">
      <ul class="nav nav-tabs card-header-tabs navigation" role="tablist">
        <li class="nav-item">
          <a class="nav-link active" href=".info" role="tab" aria-controls="info" aria-selected="true" data-toggle="tab">Info</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href=".ingredients" role="tab" aria-controls="ingredients" aria-selected="false" data-toggle="tab">Ingredients</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href=".nutrition" role="tab" aria-controls="nutrition" aria-selected="false" data-toggle="tab">Nutrition information</a>
        </li>
      </ul>
    </div>

    <div class="card-body">
      <h4 class="card-title">Item name</h4>
      <div class="tab-content mt-3">
        <div class="tab-pane active info" role="tabpanel">
          <img src="https://images.pexels.com/photos/1279330/pexels-photo-1279330.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260" class="card-img-top" alt="">
          <div class="text-center">
            <a href="" target=_blank><button type="button" class="btn btn-primary">Full recipe</button></a>
            <a href=""><button type="button" class="btn btn-primary">Add to favorites</button></a>
          </div>
        </div>

        <div class="tab-pane ingredients" role="tabpanel" aria-labelledby="ingredients-tab">
          <h6 class="card-subtitle mb-2">Ingredient list</h6>
          <ul id=ingredientList>
            <li>Ingredient</li>
            <li>Ingredient</li>
            <li>Ingredient</li>
            <li>Ingredient</li>
          </ul>
        </div>

        <div class="tab-pane nutrition" role="tabpanel" aria-labelledby="nutrition-tab">
          <h6 class="card-subtitle mb-2">Nutrition information</h6>
          <ul id=nutritionInfo>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
          </ul>
        </div>
      </div>
    </div>
  </div>

  <div class="card">
    <div class="card-header">
      <ul class="nav nav-tabs card-header-tabs navigation" role="tablist">
        <li class="nav-item">
          <a class="nav-link active" href=".info" role="tab" aria-controls="info" aria-selected="true" data-toggle="tab">Info</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href=".ingredients" role="tab" aria-controls="ingredients" aria-selected="false" data-toggle="tab">Ingredients</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href=".nutrition" role="tab" aria-controls="nutrition" aria-selected="false" data-toggle="tab">Nutrition information</a>
        </li>
      </ul>
    </div>

    <div class="card-body">
      <h4 class="card-title">Item name</h4>
      <div class="tab-content mt-3">
        <div class="tab-pane active info" role="tabpanel">
          <img src="https://images.pexels.com/photos/1279330/pexels-photo-1279330.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260" class="card-img-top" alt="">
          <div class="text-center">
            <a href="" target=_blank><button type="button" class="btn btn-primary">Full recipe</button></a>
            <a href=""><button type="button" class="btn btn-primary">Add to favorites</button></a>
          </div>
        </div>

        <div class="tab-pane ingredients" role="tabpanel" aria-labelledby="ingredients-tab">
          <h6 class="card-subtitle mb-2">Ingredient list</h6>
          <ul id=ingredientList>
            <li>Ingredient</li>
            <li>Ingredient</li>
            <li>Ingredient</li>
            <li>Ingredient</li>
          </ul>
        </div>

        <div class="tab-pane nutrition" role="tabpanel" aria-labelledby="nutrition-tab">
          <h6 class="card-subtitle mb-2">Nutrition information</h6>
          <ul id=nutritionInfo>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
          </ul>
        </div>
      </div>
    </div>
  </div>
</div>

Issue example on Codepen

【问题讨论】:

  • 您需要为您的标签提供独特的类或其他目标。
  • 我实际上期待 jquery 代码使其工作。但结果证明是直截了当的。感谢您的帮助和编辑我的帖子以使其看起来更清晰,

标签: javascript html jquery css bootstrap-4


【解决方案1】:

这是因为使用了类和href,例如:

$(document).on('click','.navigation a', function (e) {
    e.preventDefault();
    $(this).tab('show');
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet"/>
<div class="card-columns">
  <div class="card">
    <div class="card-header">
      <ul class="nav nav-tabs card-header-tabs navigation" role="tablist">
        <li class="nav-item">
          <a class="nav-link active" href=".info" role="tab" aria-controls="info" aria-selected="true" data-toggle="tab">Info</a>
        </li>
        <li class="nav-item">
          <a class="nav-link"  href=".ingredients" role="tab" aria-controls="ingredients" aria-selected="false" data-toggle="tab">Ingredients</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href=".nutrition" role="tab" aria-controls="nutrition" aria-selected="false" data-toggle="tab">Nutrition information</a>
        </li>
      </ul>
    </div>
    
    <div class="card-body">
      <h4 class="card-title">Item name</h4>
      <div class="tab-content mt-3">
        <div class="tab-pane active info" role="tabpanel">
          <img src="https://images.pexels.com/photos/1279330/pexels-photo-1279330.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260" class="card-img-top" alt="">
          <div class="text-center">
            <a href="" target=_blank><button type="button" class="btn btn-primary">Full recipe</button></a>
            <a href=""><button type="button" class="btn btn-primary">Add to favorites</button></a>
          </div>
        </div>

        <div class="tab-pane ingredients" role="tabpanel" aria-labelledby="ingredients-tab">
          <h6 class="card-subtitle mb-2">Ingredient list</h6>
          <ul id=ingredientList>
            <li>Ingredient</li>
            <li>Ingredient</li>
            <li>Ingredient</li>
            <li>Ingredient</li>
          </ul>
        </div>

        <div class="tab-pane nutrition" role="tabpanel" aria-labelledby="nutrition-tab">
          <h6 class="card-subtitle mb-2">Nutrition information</h6>
          <ul id=nutritionInfo>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
          </ul>
        </div>
      </div>
    </div>
  </div>
  
  <div class="card">
    <div class="card-header">
      <ul class="nav nav-tabs card-header-tabs navigation" role="tablist">
        <li class="nav-item">
          <a class="nav-link active" href=".info2" role="tab" aria-controls="info" aria-selected="true" data-toggle="tab">Info</a>
        </li>
        <li class="nav-item">
          <a class="nav-link"  href=".ingredients2" role="tab" aria-controls="ingredients" aria-selected="false" data-toggle="tab">Ingredients</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href=".nutrition2" role="tab" aria-controls="nutrition" aria-selected="false" data-toggle="tab">Nutrition information</a>
        </li>
      </ul>
    </div>
    
    <div class="card-body">
      <h4 class="card-title">Item name</h4>
      <div class="tab-content mt-3">
        <div class="tab-pane active info2" role="tabpanel">
          <img src="https://images.pexels.com/photos/1279330/pexels-photo-1279330.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260" class="card-img-top" alt="">
          <div class="text-center">
            <a href="" target=_blank><button type="button" class="btn btn-primary">Full recipe</button></a>
            <a href=""><button type="button" class="btn btn-primary">Add to favorites</button></a>
          </div>
        </div>

        <div class="tab-pane ingredients2" role="tabpanel" aria-labelledby="ingredients-tab">
          <h6 class="card-subtitle mb-2">Ingredient list</h6>
          <ul id=ingredientList>
            <li>Ingredient</li>
            <li>Ingredient</li>
            <li>Ingredient</li>
            <li>Ingredient</li>
          </ul>
        </div>

        <div class="tab-pane nutrition2" role="tabpanel" aria-labelledby="nutrition-tab">
          <h6 class="card-subtitle mb-2">Nutrition information</h6>
          <ul id=nutritionInfo>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
          </ul>
        </div>
      </div>
    </div>
  </div>
  
  <div class="card">
    <div class="card-header">
      <ul class="nav nav-tabs card-header-tabs navigation" role="tablist">
        <li class="nav-item">
          <a class="nav-link active" href=".info3" role="tab" aria-controls="info" aria-selected="true" data-toggle="tab">Info</a>
        </li>
        <li class="nav-item">
          <a class="nav-link"  href=".ingredients3" role="tab" aria-controls="ingredients" aria-selected="false" data-toggle="tab">Ingredients</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href=".nutrition3" role="tab" aria-controls="nutrition" aria-selected="false" data-toggle="tab">Nutrition information</a>
        </li>
      </ul>
    </div>
    
    <div class="card-body">
      <h4 class="card-title">Item name</h4>
      <div class="tab-content mt-3">
        <div class="tab-pane active info3" role="tabpanel">
          <img src="https://images.pexels.com/photos/1279330/pexels-photo-1279330.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260" class="card-img-top" alt="">
          <div class="text-center">
            <a href="" target=_blank><button type="button" class="btn btn-primary">Full recipe</button></a>
            <a href=""><button type="button" class="btn btn-primary">Add to favorites</button></a>
          </div>
        </div>

        <div class="tab-pane ingredients3" role="tabpanel" aria-labelledby="ingredients-tab">
          <h6 class="card-subtitle mb-2">Ingredient list</h6>
          <ul id=ingredientList>
            <li>Ingredient</li>
            <li>Ingredient</li>
            <li>Ingredient</li>
            <li>Ingredient</li>
          </ul>
        </div>

        <div class="tab-pane nutrition3" role="tabpanel" aria-labelledby="nutrition-tab">
          <h6 class="card-subtitle mb-2">Nutrition information</h6>
          <ul id=nutritionInfo>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
            <li>Nutrition item</li>
          </ul>
        </div>
      </div>
    </div>
  </div>
  </div>

【讨论】:

  • 它似乎是这样工作的。我实际上认为这是 jquery 问题,并且必须有一种方法来引用相同的元素。事实证明,答案非常简单。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多