数据表 - Jquery 在分页中的数据表中不起作用

Posted

技术标签:

【中文标题】数据表 - Jquery 在分页中的数据表中不起作用【英文标题】:Datatables - Jquery is not working in datatables in pagination 【发布时间】:2018-06-15 13:10:12 【问题描述】:

我试图在点击创建测验时提醒一些数据,它在第一页上工作,但在其他页面上,提醒不起作用。我已经附上了桌子的图片

我试图在谷歌上找到,但在数据表中没有任何可用的信息。

html 代码:

<table id="post-table" class="table display-table table-striped table-
bordered"  cellspacing="0">
<thead>
<tr>
  <th>Class</th>
  <th>Published</th>
  <th>Quiz</th>
  <th>Create Quiz</th>
  <th>View Quiz</th>
</tr>
</thead>
<tbody>
<?php foreach ($allposts as $allpost)  ?>
<tr>
  <td><?php echo $grades->getGradename($allpost['grade_id']); ?></td>
  <td><?php echo $others->milliToTime($allpost['created_at']); ?></td>
  <td><?php echo $quiz->quizCount($allpost['post_id']); ?></td>
  <td>
    <a href="#" data-post-id='<?php echo $allpost['post_id']; ?>' class="create-quiz"><i class="fa fa-plus-circle" aria-hidden="true"></i></a>
  </td>
  <td><a href="/admin/quiz/allquiz.php?post_id=<?php echo $allpost['post_id'] ?>"><i class="fa fa-eye" aria-hidden="true"></i></a></td>
</tr>
<?php  ?>
</tbody>
</table>

脚本

$('#post-table').DataTable(
    "bSort": false
);

$('.create-quiz').click(function(e)
    e.preventDefault();
    alert("ss");
);

【问题讨论】:

你的代码在哪里?您的代码在哪里? W H E R E I S T H E C O D E ? 代码太多,我把相关代码加进去。我希望这会有所帮助 顺便说一句,如果你正在做类似$(".button").click( 的事情,它不适用于动态添加的按钮。尝试改用$('body').on('click', '.button') DataTable 动态创建元素...尝试使用委托... Like:$(document).on([event],[selector],function()...). @LouysPatriceBessette, $("#post-table").on("click",".create-quiz",function()...);这行得通。谢谢你。所以这意味着当事情是动态的时,我应该添加到父级 【参考方案1】:

您的问题是在页面加载时您的浏览器执行您的 javascript 并将您的代码与第一页中存在的按钮相关联。但是当您更改页面时,您看到的那些元素是新元素,没有附加任何事件侦听器。

最简单的解决方案是在容器元素甚至文档上监听事件。比如:

$(document).on('click', '.create-quiz', function() console.log('here i am'); 

应该工作

【讨论】:

最接近的静态元素优于document...对于OP,即#post-table。 ;)

以上是关于数据表 - Jquery 在分页中的数据表中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Laravel 4 在分页中传递额外的参数?

laravel 仅在分页中显示下一个和上一个链接

如何在分页中获取特定行的页码

数据表工具提示在第二页中不起作用。仅适用于第一页

如何在以下代码中设置条件以在分页中标记当前页面?

数据表在 mvc 的视图页面中的我的表上不起作用