Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Datatable链接在第一页之后停止工作_Javascript_Php_Jquery_Mysql_Datatable - Fatal编程技术网

Javascript Datatable链接在第一页之后停止工作

Javascript Datatable链接在第一页之后停止工作,javascript,php,jquery,mysql,datatable,Javascript,Php,Jquery,Mysql,Datatable,我有一个datatable,里面有一个data href,可以创建一个指向论坛页面的链接,我的问题在于我的datatable链接在第一页上工作得很好,但是当我转到第二页时,我无法再跟踪链接,但当我检查元素时,它仍然拥有链接的所有数据。 datatable中链接的My JS和样式 <style> tr.clickable-row { cursor: pointer; } tr.clickable-row:hover { background-color:

我有一个datatable,里面有一个data href,可以创建一个指向论坛页面的链接,我的问题在于我的datatable链接在第一页上工作得很好,但是当我转到第二页时,我无法再跟踪链接,但当我检查元素时,它仍然拥有链接的所有数据。 datatable中链接的My JS和样式

<style>
        tr.clickable-row { cursor: pointer; }
        tr.clickable-row:hover { background-color:#F0F8FF;}
        </style>
        <script>
        jQuery(document).ready(function($) {
    $(".clickable-row").on('click',$('.clickable-row'),function() {
        window.document.location = $(this).data("href");
    });
});
</script>
MySQL表调用所有行来填充数据,并正确地提取数据

echo "<tr class='clickable-row' data-href='viewPage.php?id=".inv_forum_page()."&forum=".$forum['id']."'>
    <td>".$authorname."</td><td>".$posttype."".$forum['subject']."</td><td>".$forum['replies']."</td><td>".$forum['views']."</td>
    </tr>";
我不想发布整个函数,因为它是相当多的代码,而我不认为这是问题所在,因为它在第一页上工作,我相信它与我的Jquery有关,但是如果你想查看函数本身,它在github上 第75-123行
我阅读了关于委派事件的文章,我认为这是正确的脚本,我不确定这一点上的问题是什么。

您已将类“clickable row”指定给tr。请在表类名上尝试jQuery“on”方法,而不是tr类名。例如,将类“clickable tbl”分配给表标记并修改jQuery代码,如下所示:

$(".clickable-tbl").on('click',$('.clickable-row'),function() {
        window.document.location = $(this).data("href");
    });
使用下面的代码

您的问题称为事件委派

事件委派允许我们将单个事件侦听器附加到 父元素,该元素将为匹配 选择器,无论这些子体现在存在还是添加到 未来

如果每次调用新页面时都调用click事件,请使用下面的代码

<script>
    jQuery(document).ready(function($) {
       $(document).off('click').on('click','.clickable-row',function() {
          window.document.location = $(this).data("href");
       });
    });
</script>

尝试了一个没有任何定制的香草数据表,只是为了看看它是否有效?无法测试。问题是trIn中的自定义链接在这种情况下,我建议您在DataTablesDT上生成整个表,并通过Ajax提供数据。。。我不完全知道为什么,但对我来说,这是唯一有效的方法。。。请看这里开始:不幸的是,没有,这实际上破坏了整个脚本,并且它在第一页也不再起作用。@MorganGreen,您称之为该脚本的地方?第二页加载时无需调用。在创建表的主页面中添加上述代码。第二个函数实际起作用。我从来没有真正使用过document.off,我将不得不进一步研究它,因为现在我知道它是有效的,我想知道为什么哈哈。非常感谢你。在页面中只调用一次。此链接将帮助您了解事件委派。很高兴能帮助你,同时我感谢你的帮助。tr.clickable-row{}将应用于将clickable行附加为类的表行。在任何地方都没有提到过可点击的tbl,因为这只不过是工作过度而已。上面的答案实际上就是最终有效的答案。无论如何,谢谢你。上面的答案会有用的。但每次单击事件都会在整个dom中搜索“clickable row”元素。若您将一个类添加到表中并在该表上写入“click”事件,那个么“clickable row”元素将在表中搜索,而不是在整个dom中搜索。
<script>
    jQuery(document).ready(function($) {
       $(document).off('click').on('click','.clickable-row',function() {
          window.document.location = $(this).data("href");
       });
    });
</script>