我创建了一个dataTable,其中有两列包含<button value ="http:// .....">.当我单击按钮时,它会打开一个"jquery对话框".一切正常.问题是,当我的dataTable包含多行(超过五行)时,当我点击dataTable按钮NEXT以查看以下行时,以下行按钮不响应我的点击.只显示前线按钮才能回答我的点击.该怎么办?
这是我的dataTable:
$(document).ready(function() {gridGroup = $('#gridUser').dataTable( {
"bPaginate": true,
"bLengthChange": false,
"bSort": true,
"bFilter": true,
"bInfo": false,
"bRetrieve" : true,
"bAutoWidth": false,
"iDisplayLength": 5,
"bUrl": "",
"oLanguage": {
"sSearch": "<p>Recherche globale:<p> ",
"oPaginate": {
"sFirst": "Debut",
"sPrevious": "Prec",
"sNext": "Suiv",
"sLast": "Fin"
}
},
"sDom": '<"H"Tfr>t<"F"ip>',
'oTableTools': {
"sSwfPath": "https://www.gmerp.local/app/project/common/public/js/tabletools/media/swf/copy_csv_xls_pdf.swf",
'aButtons': [
{
"sExtends": "copy",
"sButtonText": "Copier",
"bShowAll": true,
},
{
"sExtends": "print",
"sButtonText": "Imprimer",
"bShowAll": true,
},
{
'sExtends': 'collection',
'sButtonText': 'Exporter',
'aButtons': [ 'csv', 'xls', 'pdf' ]
}
]
},
"bStateSave": false
});
$('#gridUser tbody td button').click(function (){
//todo
});
});
Run Code Online (Sandbox Code Playgroud)
和HTML部分:
<table cellpadding="0" cellspacing="0" border="1" id="gridUser">
<thead>
<tr>
<th>ID</th><th>EMAIL</th><th> </th><th> </th>
</tr>
</thead>
<tbody>
<tr align="left"><td>7</td><td>root</td><td><button value="https://localhost/user/session/edituser/7">Modifier</button></td><td><button value="https://localhost/user/session/deleteuser/7">Supprimer</button></td></tr>
<tr align="left"><td>26</td><td>wwwaa</td><td><button value="https://localhost/user/session/edituser/26">Modifier</button></td><td><button value="https://localhost/user/session/deleteuser/26">Supprimer</button></td></tr>
<tr align="left"><td>27</td><td>wwww</td><td><button value="https://localhost/user/session/edituser/27">Modifier</button></td><td><button value="https://localhost/user/session/deleteuser/27">Supprimer</button></td></tr>
<tr align="left"><td>30</td><td>soja</td><td><button value="https://localhost/user/session/edituser/30">Modifier</button></td><td><button value="https://localhost/user/session/deleteuser/30">Supprimer</button></td></tr>
<tr align="left"><td>31</td><td>ss</td><td><button value="https://localhost/user/session/edituser/31">Modifier</button></td><td><button value="https://localhost/user/session/deleteuser/31">Supprimer</button></td></tr>
<tr align="left"><td>32</td><td>sss</td><td><button value="https://localhost/user/session/edituser/32">Modifier</button></td><td><button value="https://localhost/user/session/deleteuser/32">Supprimer</button></td></tr>
<tr align="left"><td>33</td><td>ssss</td><td><button value="https://localhost/user/session/edituser/33">Modifier</button></td><td><button value="https://localhost/user/session/deleteuser/33">Supprimer</button></td></tr>
<tr align="left"><td>34</td><td>sssss</td><td><button value="https://localhost/user/session/edituser/34">Modifier</button></td><td><button value="https://localhost/user/session/deleteuser/34">Supprimer</button></td></tr>
</tbody>
<tfoot>
<tr>
<th>ID</th><th>EMAIL</th><th> </th><th> </th>
</tr>
</tfoot>
</table>
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助.
A. *_*lff 18
你应该委托事件:
$('#gridUser tbody').on('click', 'td button', function (){
//todo
});
Run Code Online (Sandbox Code Playgroud)
这对我来说更新版本的DataTable(1.10.9).我之前使用的是行单击事件,但是将其更改为按钮,因为我不希望行单击无意中触发事件处理函数
$table = $('table#summary').DataTable();
$table.on('click', 'tr', function () {
var data = $table.row(this).data();
var taskID = data[0];
});
Run Code Online (Sandbox Code Playgroud)
按钮单击示例
$table = $('table#summary').DataTable();
$table.on('click', 'button.edit-task', function () {
var closestRow = $(this).closest('tr');
var data = $table.row(closestRow).data();
var taskID = data[0];
});
Run Code Online (Sandbox Code Playgroud)