当前位置: 首页 > 知识库问答 >
问题:

Datatables—对于通过Ajax源代码/Ajax重新加载加载到表中的按钮,不会调用Jquery单击事件

壤驷瑾瑜
2023-03-14

我已将JQuery和Datatables代码正确加载到页面中。我的数据是从Datatables初始化函数中的sAjaxSource选项加载的。

我正在将按钮加载到具有类和ID的单元格中,这些类和ID应该允许JQuery在单击时触发函数。由于Datatable使用分页,只有第一个页面可以工作,因为我在初始化Datatable后(使用fnInitComplete)将JQuery click函数作为函数调用加载。

我遇到了以前的问题,并意识到我必须在初始化数据包之前将数据加载到超文本标记语言中,所有对JQuery单击函数的调用都有效,但这是使用超文本标记语言表数据,而不是来自Ajax源的数据。

简而言之,我的JQuery单击函数没有在通过AjaxSource加载到表中的元素上运行。(仅供参考,我的单击函数正在尝试将不同的数据重新加载到表中,并且在第一次重新加载后,没有任何单击事件工作,因此我担心我的第二个问题将是让单击事件在此之后运行)。我的代码如下。

<script src="fnReloadAjax.js"></script>
<script>
$(document).ready(function() {

            //Any table related events need to go in here so that it initialises post data load
            function tableInit() {
                $('.myButton').click(function() {
                    oTable.fnReloadAjax('mySource2.php');
                });
            }

            var oTable;
            oTable = $("#taskTable").dataTable({ bSort: true,
                "bProcessing": true,
                "sAjaxSource": 'mySource1.php',
                bAutoWidth: true,
                "iDisplayLength": 5, "aLengthMenu": [5, 10, 25, 50, 100], // can be removed for basic 10 items per page
                "sPaginationType": "full_numbers",
                "aoColumnDefs": [{ "bSortable": false, "aTargets": [-1, 0]}],
                "fnInitComplete": function(oSettings, json) {
                    tableInit();
                }
            });
        });
</script>

共有1个答案

方光华
2023-03-14

Jquery的传统事件处理不适用于动态添加的内容。您应该使用委派事件。与此相反:

function tableInit() 
{
    $('.myButton').click(function() {
            oTable.fnReloadAjax('mySource2.php');
        });
}

你应该这样做:

function tableInit() 
{
    $('anyParentSelector').on('click','.myButton',function() {
        oTable.fnReloadAjax('mySource2.php');
    });
}

注意,我确实放了“anyParentSelector”,它可以是body甚至document,但最佳实践建议它是动态创建的的最直接的静态父对象。myButton元素。这是出于性能原因。。。

 类似资料:
  • 问题内容: 我想知道是否有人可以指出我正确的方向。我有一个带有click事件的asp.net按钮(运行一些服务器端代码)。我想做的是通过ajax和jquery调用此事件。有什么办法吗?如果是这样,我会喜欢一些例子。 提前致谢 问题答案: 这就是jQuery对于ASP.Net开发人员真正的亮点。假设您有这个ASP按钮: 呈现后,您可以查看页面的源,页面上的ID不会是btnAwesome,而是$ ct

  • 问题内容: 我正在创建一个浏览大量图片的应用程序。至此,项目的那部分完成了,它对正确的图片进行了排序,过滤和加载,甚至将它们拆分为单独的页面以加快加载速度。 效果很好,但每页加载25张图片仍需要8秒钟以上。我已经进行了一些研究,得出的结论是,使用异步jQuery Ajax请求是最好的方式,以便尽可能快地同时加载所有请求。 到目前为止,这是我的代码: 此代码的问题在于,除了带有灰色边框的空白方形外,

  • 问题内容: 我有一个下拉列表,需要根据一条语句动态加载表单元素 情况1加载一些表单元素(输入等) 情况2清除这些元素… 谢谢 问题答案: 试试这个:

  • 问题内容: 我们正在发出多个ajax请求,以“保存” Web应用程序中的数据,然后重新加载页面。我们遇到了这样一种情况:(由于请求是异步发出的)在ajax调用完成时或之前重新加载页面。一种简单的解决方案是使用“ async”:false选项启用ajax调用,从而强制进行同步调用。这似乎可行,但是在执行任何调用之前运行的对话框代码会延迟运行。 任何意见是极大的赞赏! 还应注意,在重新加载之前放置al

  • 问题内容: 下面的代码有效。如果有更好的方法,请告诉我。如果我使用通过ajax加载test.html的主页中test.html中存在的脚本内容。该脚本不起作用。 Test.html: 我们必须根据需要通过ajax加载脚本以及动态加载的内容,但是我感到不利的是,每次我们发送ajax请求脚本时都会始终加载内容。但是我只找到了这种解决方案。如果有人知道更好的解决方案,请回复。 例如,如果以这种方式更改代

  • 问题内容: 我正在尝试使用DataTables插件为Ajax数据绑定Asp.Net Repeater控件,但无法正常工作以下是我的代码。 这是作为Json对象获得的Class 这是服务方法 首先,当我调用我的Web服务方法时,它没有去那里,请告诉我其余代码是否正确,这是标记 问题答案: @蒂姆·詹姆斯 我已经做到了,但是我尝试使用它的原因是无视的。仅提取80条记录需要花费大量时间。在这里找到我的客