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个表行,则三个按钮中只有两个会起作用,即使这样,有时模态视图也会停止工作。例如,一旦按下按钮,模态视图就会出现另外两个按钮,如果您单击这些按钮之一,视图将关闭。但是当添加更多行时,单击初始行中的按钮时,模态视图中的按钮(在单击表格行内的按钮后出现的按钮)不起作用。这是在初始按钮的顶部,仅适用于其他每一行。
答案 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>
位置奇怪(位于您的内部)。