JQuery .on('click') 在 DataTables 第 2 页或超过 11 的行中不起作用

2022-08-30 16:22:35

我有一个jQuery链接,当单击超链接时,该链接在每行的动态列表上运行。

这在应用数据表之前有效,但是一旦应用了数据表,第11行(在将显示更改为高于默认值10之后)或在另一个页面上,jQuery将不再被调用。

我尝试将其放入jsFiddle中,并且它在那里工作,因此由于某种原因,我无法在jsFiddle中重现它。

任何指向正确方向的指针将不胜感激。

菲律宾比索:

echo "<table id='paginatedTable'>";
echo "<thead><th>Test1</th><th>Test2</th></thead><tbody>";
foreach($array as $arr){
 echo "<tr><td>" . $arr['test1'] . "</td><td><div class='test'>";
 echo "<a href='#' class='toggleTest' data-id='". $arr['id']."' id='test-" . $arr['id'] . "'>" . $arr['test2'] . "</a>";
 echo "</div></td></tr>";
}
echo "</tbody></table>";

jQuery

$(function(){
    $('.test').on('click', '.toggleTest', function(e){
        var id = $(this).data('id');
        $("#test-"+id).html("Done");
        return false;
    });
});

$(document).ready(function() {
    $('#paginatedTable').dataTable();
} );

答案 1

您需要将处理程序绑定到静态元素,而不是可以动态添加的行。所以它应该是:

$("#paginatedTable").on("click", ".test .toggleTest", function ...);

答案 2

我关注了@Barmar的答复。

除此之外,我已经将点击包装到document.ready函数中,然后它为我工作。

$(document).ready(function() {

$('#dmtable tbody').on( 'click', 'tr td.details-control', function () {

}
} );