用jquery添加html表行不能设置为标记
Adding html table row with jquery can not set as marked
我写了一个带有表格的HTML文件。默认情况下,该表大约有7个条目(包含数据的行)。当用户单击其中一行时,背景颜色会发生变化并被标记,我使用jquery切换函数实现了这一点。我也有一个按钮,在这个表中添加进一步的行,也与jquery。我的问题:当我(用户)添加一些行与该按钮,并单击这些新添加的行背景颜色没有改变,但默认行的背景颜色改变。
<!DOCTYPE html>
<html>
<head>
<title>My Page</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$(".row").click(function(){
$(this).toggleClass("activeRow");
});
$(document).on('click', '#addButton', function(){
$(".myTable tbody").append(" <tr class="row"> <td>New</td> <td>This</td> <td>is</td> <td>great</td> </tr>");
});
});
</script>
<style>
.activeRow{
background-color:#B0BED9;
}
.myTable {
border-collapse: collapse;
width: 80%;
clear:both;
margin-top: 0;
border-spacing: 0;
table-layout: fixed;
border-bottom: 1px solid #000000;
}
.myTable tbody, .myTable thead{
display: block;
width: 100%;
}
.myTable tbody{
overflow: auto;
height: 300px;
}
.myTable th, td{
width: 450px;
}
</style
<table class="myTable">
<thead>
<tr id="headRow">
<th>alo</th>
<th>salam</th>
<th>kissa</th>
<th>chissa</th>
</tr>
</thead>
<tbody class="bodyRows">
<tr class="row" >
<td>Microsoft</td>
<td>Saber</td>
<td>30.5</td>
<td>23.5</td>
</tr>
<tr class="row">
<td>Huawei</td>
<td>20.3</td>
<td>30.5</td>
<td>23.5</td>
</tr>
<tr class="row">
<td>Huawei</td>
<td>20.3</td>
<td>30.5</td>
<td>23.5</td>
</tr>
<tr class="row">
<td>Huawei</td>
<td>20.3</td>
<td>30.5</td>
<td>23.5</td>
</tr>
<tr class="row">
<td>Huawei</td>
<td>20.3</td>
<td>30.5</td>
<td>23.5</td>
</tr>
<tr class="row">
<td>Huawei</td>
<td>20.3</td>
<td>30.5</td>
<td>23.5</td>
</tr>
<tr class="row">
<td>Huawei</td>
<td>20.3</td>
<td>30.5</td>
<td>23.5</td>
</tr>
<tr class="row">
<td>Google</td>
<td>50.2</td>
<td>40.63</td>
<td>45.23</td>
</tr>
<tr class="row">
<td>Apple</td>
<td>25.4</td>
<td>30.2</td>
<td>33.3</td>
</tr>
<tr class="row">
<td>IBM</td>
<td>20.4</td>
<td>15.6</td>
<td>22.3</td>
</tr>
</tbody>
</table>
<button id="addButton" class="tableButton">Add Row</button>
您还需要将行单击事件与。on方法绑定。
$(document).ready(function() {
$(document).on("click", ".myTable .row", function() {
$(this).toggleClass("activeRow");
});
$(document).on('click', '#addButton', function() {
$(".myTable tbody").append(" <tr class='row'> <td>New</td> <td>This</td> <td>is</td> <td>great</td> </tr>");
});
});
.activeRow {
background-color: #B0BED9;
}
.myTable {
border-collapse: collapse;
width: 80%;
clear: both;
margin-top: 0;
border-spacing: 0;
table-layout: fixed;
border-bottom: 1px solid #000000;
}
.myTable tbody,
.myTable thead {
display: block;
width: 100%;
}
.myTable tbody {
overflow: auto;
height: 300px;
}
.myTable th,
td {
width: 450px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="myTable">
<thead>
<tr id="headRow">
<th>alo</th>
<th>salam</th>
<th>kissa</th>
<th>chissa</th>
</tr>
</thead>
<tbody class="bodyRows">
<tr class="row">
<td>Microsoft</td>
<td>Saber</td>
<td>30.5</td>
<td>23.5</td>
</tr>
<tr class="row">
<td>Huawei</td>
<td>20.3</td>
<td>30.5</td>
<td>23.5</td>
</tr>
<tr class="row">
<td>Huawei</td>
<td>20.3</td>
<td>30.5</td>
<td>23.5</td>
</tr>
<tr class="row">
<td>Huawei</td>
<td>20.3</td>
<td>30.5</td>
<td>23.5</td>
</tr>
<tr class="row">
<td>Huawei</td>
<td>20.3</td>
<td>30.5</td>
<td>23.5</td>
</tr>
<tr class="row">
<td>Huawei</td>
<td>20.3</td>
<td>30.5</td>
<td>23.5</td>
</tr>
<tr class="row">
<td>Huawei</td>
<td>20.3</td>
<td>30.5</td>
<td>23.5</td>
</tr>
<tr class="row">
<td>Google</td>
<td>50.2</td>
<td>40.63</td>
<td>45.23</td>
</tr>
<tr class="row">
<td>Apple</td>
<td>25.4</td>
<td>30.2</td>
<td>33.3</td>
</tr>
<tr class="row">
<td>IBM</td>
<td>20.4</td>
<td>15.6</td>
<td>22.3</td>
</tr>
</tbody>
</table>
<button id="addButton" class="tableButton">Add Row</button>
将toggleClass行为添加到现有行,而不是新创建的行。您需要在创建新行时添加事件:
$(document).ready(function () {
$(".row").on('click', function (ev) {
$(this).toggleClass("activeRow");
});
$('#addButton').on('click', function (ev) {
$(".myTable tbody").append(' <tr class="row"> <td>New</td> <td>This</td> <td>is</td> <td>great</td> </tr>');
$(".row").off('click').on('click', function (ev) { // off, to avoid overloading listeners on click event
$(this).toggleClass("activeRow");
});
});
});
相关文章:
- Django可以'不能在设置中导入ckeditor,但可以在shell中导入
- 为什么当async标志设置为false时,xmlhttprequest中的代码可以工作,而当它设置为true时却不能工作
- 设置AngularJS控制器属性不能是使用Coffeescript的最后一行
- 打字稿显示不能设置未定义的属性,如何解决
- 像Advanced Rest Client这样的Chrome应用可以设置引荐来源网址标头,而网站则不能
- 不能设置未定义的属性
- 为什么我不能在 JavaScript 中将对象属性设置为空字符串
- 为什么我不能在 Javascript 中或从代码隐藏中将焦点设置为 ASP.Net TextBox 控件
- JS:不能停止设置间隔与清除间隔
- 为什么我不能使用 .colspan 设置此元素的 colspan
- Jquery - 为什么我不能在 $.ajax 中访问/设置我的 var
- 不能用var设置边距:JavaScript,CSS和jQuery
- 不能使用 Angular.js 或 Javascript 将表中的行值设置为数组
- Unca不能将属性“innerHTML”设置为空
- 为什么我不能在节点中设置时刻区域设置
- 为什么不能将别名设置为 document.getElementById()
- 为什么我不能设置更多饼干
- 为什么我不能使用角度将此图像设置为链接
- 为什么我不能以编程方式为 TH 标签设置 colspan
- 为什么“设置超时”不能正常工作