多个模态卡在循环中,Bootstrap

时间:2017-06-25 22:55:01

标签: javascript jquery html css twitter-bootstrap

我最近在Bootsrap 3中遇到过模态问题。

我正在测试一个测试网站(不是我实际上放在网上的任何东西)并且有3张图片(每张图片在col-md-4中)彼此相邻,我打算让一个按钮居中在每张图片下,可以点击一个模式以显示更多信息。

我设置了第一个完美的模态 然而,当我添加第二个时,我发现当你点击任一按钮时,两个模态都显示在彼此之上(第二个是第一个),当你按下“返回主页”时,它会转到另一个模态

你只能按“X”一两次回家。

我几乎可以肯定这是因为<head>中的JavaScript非常不正确,但我不是很擅长JS而且不知道我做错了什么......

这是html所以你可以检查我的手工作品:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>space</title>
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <link rel="stylesheet" href="css/style.css">
    <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
    <script type="text/javascript" src="js/bootstrap.min.js"></script>
    <link href="https://fonts.googleapis.com/css?family=Lato:100,300" rel="stylesheet"> 
    <script type="text/javascript">
      $(function(){
        $(".btn").click(function(){
          $("#chimechoModal").modal('show');
        });
      });
    </script>
    <script type="text/javascript">
      $(function(){
        $(".btn").click(function(){
          $("#eeveeModal").modal('show');
        });
      });
    </script>
  </head>
  <body>
    <div class="container custom-container">
      <div class="row">
        <div class="col-xs-12" style="height:15px;"></div>
      </div>
      <div class="row">
        <div class="col-md-6">
          <img src="images/logo.png" class="img-responsive">
        </div>
        <div class="col-md-6 text-right text-uppercase">
          <h1>Mini Pokedex</h1>
          <h4>Created by spaceman1980</h4>
        </div>
      </div>
      <div class="row">
        <hr>
      </div>
      <div class="row">
        <div class="col-md-4">
          <img class="img-responsive center-block" src="images/chimecho.png" style="width: 100%; height: auto;">    
        </div>
        <div class="col-md-4">
          <img class="img-responsive center-block" src="images/eevee.png" style="width: 100%; height: auto;">   
        </div>
        <div class="col-md-4">
          <img class="img-responsive center-block" src="images/james.jpg" style="width: 100%; height: auto;">   
        </div>
      </div>
      <div class="row">
        <div class="col-md-4 text-center">
          <!-- Button trigger modal -->
          <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#chimecho">
            Pokedex Entry
          </button>

          <!-- Modal -->
          <div class="modal fade" id="chimechoModal" tabindex="-1" role="dialog" aria-labelledby="chimechoLabel" aria-hidden="true">
            <div class="modal-dialog" role="document">
              <div class="modal-content">
                <div class="modal-header">
                  <div class="row">
                    <div class="col-md-6 text-left">
                      <h5 class="modal-title" id="chimechoLabel">The Wind Chime Pokemon</h5>
                    </div>
                    <div class="col-md-6 text-right">
                      <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                      </button>
                    </div>
                  </div>
                </div>
                <div class="modal-body">
                  <h5>
                    Chimecho makes its cries echo inside its hollow body. When this Pokémon becomes enraged, its cries result in ultrasonic waves that have the power to knock foes flying.
                  </h5>
                </div>
                <div class="modal-footer">
                  <button type="button" class="btn btn-secondary" data-dismiss="modal">Back to home</button>
                </div>
              </div>
            </div>
          </div>
        </div>
        <div class="col-md-4 text-center">
          <!-- Button trigger modal -->
          <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#eevee">
            Pokedex Entry
          </button>

          <!-- Modal -->
          <div class="modal fade" id="eeveeModal" tabindex="-1" role="dialog" aria-labelledby="eeveeLabel" aria-hidden="true">
            <div class="modal-dialog" role="document">
              <div class="modal-content">
                <div class="modal-header">
                  <div class="row">
                    <div class="col-md-6 text-left">
                      <h5 class="modal-title" id="eeveeLabel">The Evolution Pokemon</h5>
                    </div>
                    <div class="col-md-6 text-right">
                      <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                      </button>
                    </div>
                  </div>
                </div>
                <div class="modal-body">
                  <h5>
                    Eevee has an unstable genetic makeup that suddenly mutates due to the environment in which it lives. Radiation from various stones causes this Pokémon to evolve.
                  </h5>
                </div>
                <div class="modal-footer">
                  <button type="button" class="btn btn-secondary" data-dismiss="modal">Back to home</button>
                </div>
              </div>
            </div>
          </div>
        </div>

      </div>
    </div>
  </body>
</html>

2 个答案:

答案 0 :(得分:0)

这是因为您正在使用.btn(两个按钮上共享的公共类)来触发模态。因此,当您点击任何.btn时,它会触发两个模态。

要么添加一个类/ id,要么使用单击处理程序上的data-target属性来激活相应的模态,或者由于你的按钮位于html中的模态元素之前,你只需使用单击处理程序使用$('.btn')并通过$(this).next().modal()触发模态。

&#13;
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>space</title>
  <link rel="stylesheet" href="css/bootstrap.min.css">
  <link rel="stylesheet" href="css/style.css">
  <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
  <script type="text/javascript" src="js/bootstrap.min.js"></script>
  <link href="https://fonts.googleapis.com/css?family=Lato:100,300" rel="stylesheet">
  <script type="text/javascript">
    $(function() {
      $(".btn").on('click',function() {
        $(this).next().modal("show");
      });
    });
  </script>
</head>

<body>
  <div class="container custom-container">
    <div class="row">
      <div class="col-xs-12" style="height:15px;"></div>
    </div>
    <div class="row">
      <div class="col-md-6">
        <img src="images/logo.png" class="img-responsive">
      </div>
      <div class="col-md-6 text-right text-uppercase">
        <h1>Mini Pokedex</h1>
        <h4>Created by spaceman1980</h4>
      </div>
    </div>
    <div class="row">
      <hr>
    </div>
    <div class="row">
      <div class="col-md-4">
        <img class="img-responsive center-block" src="images/chimecho.png" style="width: 100%; height: auto;">
      </div>
      <div class="col-md-4">
        <img class="img-responsive center-block" src="images/eevee.png" style="width: 100%; height: auto;">
      </div>
      <div class="col-md-4">
        <img class="img-responsive center-block" src="images/james.jpg" style="width: 100%; height: auto;">
      </div>
    </div>
    <div class="row">
      <div class="col-md-4 text-center">
        <!-- Button trigger modal -->
        <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#chimecho">
                        Pokedex Entry
                    </button>

        <!-- Modal -->
        <div class="modal fade" id="chimechoModal" tabindex="-1" role="dialog" aria-labelledby="chimechoLabel" aria-hidden="true">
          <div class="modal-dialog" role="document">
            <div class="modal-content">
              <div class="modal-header">
                <div class="row">
                  <div class="col-md-6 text-left">
                    <h5 class="modal-title" id="chimechoLabel">The Wind Chime Pokemon</h5>
                  </div>
                  <div class="col-md-6 text-right">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                                <span aria-hidden="true">&times;</span>
                                            </button>
                  </div>
                </div>
              </div>
              <div class="modal-body">
                <h5>
                                        Chimecho makes its cries echo inside its hollow body. When this Pokémon becomes enraged, its cries result in ultrasonic waves that have the power to knock foes flying.
                                    </h5>
              </div>
              <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-dismiss="modal">Back to home</button>
              </div>
            </div>
          </div>
        </div>
      </div>
      <div class="col-md-4 text-center">
        <!-- Button trigger modal -->
        <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#eevee">
                        Pokedex Entry
                    </button>

        <!-- Modal -->
        <div class="modal fade" id="eeveeModal" tabindex="-1" role="dialog" aria-labelledby="eeveeLabel" aria-hidden="true">
          <div class="modal-dialog" role="document">
            <div class="modal-content">
              <div class="modal-header">
                <div class="row">
                  <div class="col-md-6 text-left">
                    <h5 class="modal-title" id="eeveeLabel">The Evolution Pokemon</h5>
                  </div>
                  <div class="col-md-6 text-right">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                                <span aria-hidden="true">&times;</span>
                                            </button>
                  </div>
                </div>
              </div>
              <div class="modal-body">
                <h5>
                                        Eevee has an unstable genetic makeup that suddenly mutates due to the environment in which it lives. Radiation from various stones causes this Pokémon to evolve.
                                    </h5>
              </div>
              <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-dismiss="modal">Back to home</button>
              </div>
            </div>
          </div>
        </div>
      </div>

    </div>
  </div>
</body>

</html>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

1)即使您使用内联javascript,也无需定义<script>代码两次

2)代码中的这一行表示,只要DOM中的某个元素具有类&#39; btn&#39;单击它将执行一个功能(在你的情况下打开一个模态)。你正在聆听&#b; btn&#39;元素&#39;点击活动。

 $(".btn").click(function(){

您可以为每个模态类型的每个按钮指定一个不同的类。例如,

<script type="text/javascript">

    <button type="button" class="btn btn-primary btn-chimecho" data-toggle="modal" data-target="#chimecho">

    <button type="button" class="btn btn-primary btn-eevee" data-toggle="modal" data-target="#eevee">


     $(function(){
       $(".btn-chimecho").click(function(){
           $("#chimechoModal").modal('show');
         });
       $(".btn-eevee").click(function(){
           $("#eeveeModal").modal('show');
         });

     });

</script>