我正在创建一个Node.js应用程序并使用jQuery数据表。我希望我的表字段可以编辑,因此也可以使用Jeditable。
的script.js
$(document).ready(function(){
$("#example").dataTable({
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "/my_ajax_url_here",
"sScrollX": "100%",
"bScrollCollapse": true,
"sScrollY":"100%"
});
$('.edit').editable('/ajax_url'); //These are static elements on page and are editable as expected
$('td').editable('/ajax_url'); //These elements are not in source but rendered on page
});
这里我的表是使用数据表服务器端处理动态生成的。没有< td>变得可编辑。但是.edit类的div是可编辑的,它是静态html文件的一部分。我在这里做错了什么?
我的html文件来源
<!DOCTYPE html>
<html lang="en">
<head>
<title>Home</title>
<link rel="stylesheet" href="/stylesheets/style.css">
<link rel="stylesheet" href="/stylesheets/data_table_bk.css">
<script type="text/javascript" src="/js/jquery.js"></script><script type="text/javascript" src="/js/jquery_datatable.js"></script><script type="text/javascript" src="/js/jquery_jeditable.js"></script>
</head>
<body>
<header>
<h1>Data Table</h1>
</header>
<div class="container">
<div class="main-content">
<table id="example">
<thead>
<tr>
<th>Name</th>
<th>Field1</th>
<th>Field2</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
</div>
<div class="edit">This is editable</div>
<script type="text/javascript" src="/js/script.js"></script>
</body>
</html>
我没有看到源代码中呈现的任何数据,即显示时页面中有多行数据,但它们不在页面的HTML源中。它是否与可编辑的事件无关?
答案 0 :(得分:3)
显然,这是由于动态加载的元素,Jeditable无法将它的事件附加到它们。通过在jQuery数据表的ajax完成上使用回调来修复它。
"fnDrawCallback" : function() {
$('td').editable('/ajax_url_here');
}