模态按钮仅适用于其他每一行,是什么让它不适用于每一行?

时间:2017-07-21 14:01:49

标签: javascript html css twitter-bootstrap bootstrap-modal

HTML code:

      <html>
             <head>
           <link rel="stylesheet" type="text/css" href="css/tablestyle.css">
        </head>

       <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"> </script>

            <script type="text/javascript" src="datasource/people.json"> </script>

            <script>

            $(function() {

  var people = [];

   $.getJSON('datasource/people.json', function(data) {
      $.each(data.person, function(i, f) {
        var tblRow = "<tr>" + "<td><button class='button-border   toggleModal'><span class='icon'></span> Timesheet Approval</button></td>" + "  <td>" + f.lastName + "</td>" + "<td>" + f.job + "</td>" + "<td>" + f.roll + " </td>" + "<td>" + f.hours + "</td>" + " </tr>"
            $(tblRow).appendTo("#userdata tbody");

                     $('.toggleModal').on('click', function (e) {
                       $('.modal').toggleClass('active');

                    });
                     });

                });

              });
           </script>

             <body>
        <table id="userdata" rules="groups" style="border: 1px solid             black;">
<thead>

    <tr>
                    <th> </th>
                    <th>EmployeeNum</th>
                    <th>EmployeeName</th>
                    <th>ChargeNum</th>
                    <th>Hours</th>
            </tr>
      </thead>

    <tbody>



    </tbody>



          </table>
          <div class="modal">

<header>
  <button class="close toggleModal">Close</button>
        </header>

        <section>
  <p>To approve the timesheet and submit it to WAM press "Approve", to decline the timesheet for later viewing press "Disapprove"</p>
       </section>

         <button class="button-border button-success toggleModal">
            <span class="icon"></span> Approve </button>

          <button class="button-border button-error pull-right toggleModal">
                <span class="icon">< </span> Disapprove </button>
                       <!-- <script> $(docuemnt).ready(function(){ -->
                           <!-- var rowCount = $('table#tableId tr:#a').index() + 1; -->
                    <!-- $("#a").style.color = "red"}); -->
                    <!-- </script> -->

           </div>


            <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

<script src="js/index.js"></script>


          </body>
          </html>

CSS代码:

    html{
        font:0.75em/1.5 sans-serif;
        color:#333;
        background-color:#fff;
        padding:1em;
    }

    /* Tables */
 table{
width:100%;
        margin-bottom:1em;
        border-collapse: collapse;
        border: 1px;
    }
  th{
font-weight:bold;
        background-color:#ddd;
    }

  td{
padding:0.5em;
        border:1px solid black;

    }

  tr:nth-child(even) {
background-color: #ddd;

}

  a.button {
-webkit-appearance: button;
-moz-appearance: button;
appearance: button;

text-decoration: none;
color: initial;
 }      

  @font-face {
 font-family: 'ios7-icon';
  src: url("//ios7-icon-font-demo.herokuapp.com/fonts/ios7-icon.woff") format("woff"), url("//ios7-icon-font-demo.herokuapp.com/fonts/ios7-icon.ttf") format("ttf");
font-weight: normal;
 font-style: normal;
  }
   *, *:before, *:after {
 -moz-box-sizing: border-box;
 -webkit-box-sizing: border-box;
 box-sizing: border-box;
     }

   body {
padding: 50px;
font-family: 'Helvetica Neue' !important;
 font-weight: 300;
       }

     .wrapper {
 max-width: 500px;
 margin: 0 auto;
            }

     h1 {
   font-weight: 100;
 font-size: 45px;
 color: #007aff;
        }

    h2 {
font-weight: 500;
font-size: 21px;
margin-bottom: 15px;
     }

       section {
 margin-top: 30px;
    }
    section p {
line-height: 1.4;
margin-bottom: 20px;
      }



   button {
 -webkit-appearance: none;
-moz-appearance: none;
 -ms-appearance: none;
 -o-appearance: none;
 appearance: none;
 -moz-border-radius: 6px;
 -webkit-border-radius: 6px;
 border-radius: 6px;
 border: none;
 outline: none;
 font: inherit;
 cursor: pointer;
 margin: 0;
 padding: 0;
 background: LightBlue; 
color: #007aff;
 font-weight: 300;
 font-size: 14px;
 -moz-border-radius: 0px;
 -webkit-border-radius: 0px;
 border-radius: 0px;
 /* &:nth-child(even){ */
  /* background: white; */
 /* } */
 /*  &:last-child {
     border-color: red;
  margin-bottom: 0;
   }*/
 }
 button:hover {
  text-decoration: underline;
}
  button.button-border {
  -moz-border-radius: 5px;
 -webkit-border-radius: 5px;
  border-radius: 5px;
  padding: 10px 12px 8px 12px;
  border: 1px solid #007aff;
}
  button.button-border:hover { 
  background: #007aff; 
 color: #ffffff; 
 text-decoration: none; 
 } 
button.button-success { 
 /color: #4dd865; */
  border-color: #4dd865; 
 } 
 button.button-success:hover { 
   background: #4dd865; 
 } 
 button.button-error { 
  color: #ff3b30; 
  border-color: #ff3b30; 
 } 
button.button-error:hover { 
  background: #ff3b30; 
 } 

.modal {
 display: none;
 position: fixed;
  top: 50%;
 left: 50%;
 width: 430px;
  height: auto;
  margin-left: -200px;
 margin-top: -150px;
 background-color: #ffffff;
 padding: 25px;
 border-radius: 5px;
 z-index: 10;
  box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.5);
   }
   .modal.active {
  display: block;
    }
.modal header {
 position: relative;
}
.modal h2 {
  text-align: center;
}
.modal .close {
 position: absolute;
 top: 3px;
 right: 0;
  margin: 0;
}

.pull-right {
 float: right;
}

.icon {
 display: inline-block;
  font-size: inherit;
   font-family: circle;
   margin-right: 5px;
   color: inherit;
  -webkit-text-rendering: geometricPrecision;
  -moz-text-rendering: geometricPrecision;
  -ms-text-rendering: geometricPrecision;
  -o-text-rendering: geometricPrecision;
  text-rendering: geometricPrecision;
   }

引入表数据的Json代码:

{
    "person": [
    {
       "firstName": " ",
       "lastName": "Kent",
       "job": "Reporter",
       "roll": 20,
       "hours":10
   },
   {
       "firstName": " ",
       "lastName": "Wayne",
       "job": "Playboy",
       "roll": 30,
       "hours":20
   }
   ]
  }  

我在行开头使用的按钮只能用于其他每一行。该按钮基本上允许该人接受或拒绝给定行内的数据,因此每行都需要该按钮。该表必须是动态的,以便从本地HTML页面以外的源读取信息。如果我要添加3个表行,则三个按钮中只有两个会起作用,即使这样,有时模态视图也会停止工作。例如,一旦按下按钮,模态视图就会出现另外两个按钮,如果您单击这些按钮之一,视图将关闭。但是当添加更多行时,单击初始行中的按钮时,模态视图中的按钮(在单击表格行内的按钮后出现的按钮)不起作用。这是在初始按钮的顶部,仅适用于其他每一行。

1 个答案:

答案 0 :(得分:1)

如果在添加所有行后添加处理程序怎么样?

$(function() {
  var people = [];

  $.getJSON('datasource/people.json', function(data) {
    $.each(data.person, function(i, f) {
      var tblRow = "<tr>" + "<td><button class='button-border   toggleModal'><span class='icon'></span> Timesheet Approval</button></td>" + "  <td>" + f.lastName + "</td>" + "<td>" + f.job + "</td>" + "<td>" + f.roll + " </td>" + "<td>" + f.hours + "</td>" + " </tr>"
      $(tblRow).appendTo("#userdata tbody");
    });

    // Add the click handler after adding all table rows
    $('#userdata').on('click', '.toggleModal', function (e) {
      $('.modal').toggleClass('active');
    });
  });
});

否则,您将在第一行添加一次处理程序,在第二行添加两次,在第三行添加三次等等。

这就是为什么它适用于其他所有行。切换两次(或任何可被2整除的数字)将导致它打开然后关闭。

此外,您的<tbody>位置奇怪(位于您的内部)。