我正在使用jQuery在表上添加或编辑行。如果我尝试在这里编辑一行它可以工作,但是如果我添加一个新行,则编辑不起作用。
我的脚本:
//Add a row
$("#btnadd").click(function(){
$('.table tr:last').after('<tr>' +
"<td>Name</td>"+
'</tr>');
});
//Edit a row (took from a tutorial)
$(function () {
$("td").dblclick(function () {
var OriginalContent = $(this).text();
$(this).addClass("cellEditing");
$(this).html("<input type='text' value='" + OriginalContent + "' />");
$(this).children().first().focus();
$(this).children().first().keypress(function (e) {
if (e.which == 13) {
var newContent = $(this).val();
$(this).parent().text(newContent);
$(this).parent().removeClass("cellEditing");
}
});
$(this).children().first().blur(function(){
$(this).parent().text(OriginalContent);
$(this).parent().removeClass("cellEditing");
});
});
});
我对Jquery很陌生,所以我很确定我错过了一些明显的东西。
答案 0 :(得分:1)
$('table').on('click','tr', function(){
$(this).css('color','green');
});
$('button').on('click',function(){
var newRow = $('<tr class="row"><td>New</td><td>Row</td><td>29</td></tr>');
$('table').append(newRow);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table style="width:100%">
<tr>
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
</table>
<button>Add</button>
我认为这是因为当页面加载时,click-event绑定到表。您在加载页面后输入的任何新行都缺少此事件。现在,单击TR(表格行)时会触发您的函数。由于加载页面时该(新)表行不存在,因此事件不会绑定到新行。
您可以通过将click-event绑定到表来解决此问题。通过这种方式,它将工作。如果你点击它,我做了一个小提琴,其中tr是绿色的。它也适用于新添加的表行
$('table').on('click','tr', function(){
//do your edits
});
我认为你在副本中犯了一个小错误,因为你添加行的点击功能没有正确关闭?