如何在动态生成的HTML表中停止递归
How to stop recursion in dynamically generated HTML table
有关问题的工作示例,请参阅jsfiddle。
http://jsfiddle.net/grdhog/Wng5a/5/
当我向表中添加一行时。我首先通过ajax将其发送到服务器,然后通过ajax json调用完全重建表。当我删除一行时,我首先通过ajax将其发送到服务器,然后通过ajax json调用完全重建表。
删除是递归的-请参阅控制台输出
单击几行以"删除"它们,您将看到递归。这个简化的例子实际上并没有添加或删除行,但希望您能理解。你能解释一下我为什么有这个问题以及如何解决吗。我怀疑我从delete click调用get_rows()是问题的一部分。
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body><p>Turn on the Javascript console to see output:</p>
<button id="add">add new row</button>
<table id="rows">
</table>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
$(document).ready(function() {
get_rows();
$('#add').click(function() {
// ajax call to server to add row
console.log("add row");
get_rows();
return false;
});
function get_rows(){
console.log("inside get_rows!");
$("#rows").empty();
// ajax call to return all rows
for (i=0; i < 5;i++){
var item = '<tr><td id="' + i + '" class="del_row">delete row ' + i + ' by clicking me!</td></tr>';
$("#rows").append(item);
}
$(document).on("click", ".del_row", function(){
id = $(this).prop('id');
console.log("delete row " + id);
// ajax call to delete on server
get_rows();
});
}
}); // end ready
</script>
</body>
</html>
您必须将.on
调用移出get_rows
函数。因为除此之外,每次调用get_rows
都会添加一个新的侦听器。
function get_rows(){
console.log("inside get_rows!");
$("#rows").empty();
// ajax call to return all rows
for (i=0; i < 5;i++){
var item = '<tr><td id="' + i + '" class="del_row">delete row ' + i + ' by clicking me!</td></tr>';
$("#rows").append(item);
}
}
$(document).on("click", ".del_row", function(){
id = $(this).prop('id');
console.log("delete row " + id);
// ajax call to delete on server
get_rows();
});
http://jsfiddle.net/Wng5a/6/
id属性不能是数字,您可以在这里阅读更多信息HTML中id属性的有效值是什么?
当然,这不能回答你的问题,但你可以防止其他人在未来出现问题。
相关文章:
- 数组在递归方法中设置为null
- Kendo:我该如何在树视图中创建一个递归的hieiarchy
- 递归使用 eval() 是检查程序执行的好方法吗?
- 使用递归、Ramda.js和无点样式重构字符串的getPermutations()
- 有更好的方法吗?(递归解析HTML unicode实体)
- ng递归地包括整个index.html;达到“10$digest()迭代”;
- 在递归循环javascript之后,为JSON键变量使用自定义HTML元素
- 递归地将嵌套xml转换为嵌套html
- 递归单步执行 HTML DOM 并打印属性
- 使用 Angularjs 的递归和将 Elemnts 附加到 HTML 模板
- Java 脚本:递归地遍历关联的 HTML 文件的 Dom,并打印遇到的元素类型
- 递归地从 html 中删除空节点
- 如何使用 AngularJS 递归地将 JSON 树呈现为 HTML
- 从带有javascript递归的xml到HTML<ul>
- 使用Angular递归HTML元素
- 如何在动态生成的HTML表中停止递归
- 使用 JavaScript 递归函数创建 HTML 不起作用
- 转换无序列表html
- 对json数组递归调用子列表
- 递归地验证HTML输入元素
- Adobe Air HTML递归文件到JSON