通过 JQuery 获取动态内容的 ID

Getting ID via JQuery for dynamic content

我正在使用 PHP 创建一些动态内容选项卡,选项卡上的一个对象是数据 table。我通过 PHP 定义 ID,如下所示:

PHP:

echo '<table class="table table-striped table-bordered table-hover" id="'.$nospaces.'">';

table 可以完美地加载数据,但是我在初始化数据table 以进行排序和过滤时遇到问题。通常在静态 tables 上我会使用静态 ID 初始化它,但在这种情况下我不能这样做。

我想我可以做一些 jquery 来监听选项卡单击事件,然后获取 table ID 并将其加载到 jquery 数据 table 中初始化,但这也不起作用。我刚收到未定义的警报:

JQuery:

<script>
    $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
    var row = $(this).closest('table').attr('id');
    alert(row);

    $(document).ready(function() {
    oTable = $('row').dataTable( {
       "sDom": '<"top"lf>rt<"bottom"ip><"clear">'

    });

    });
    });
</script>

如有任何帮助,我们将不胜感激!谢谢

有什么理由你仍然不能使用静态 ID 吗?

var staticID = '<?php echo $nospaces; ?>';

$('#' + staticID).dataTable();

我想使用变量 row 可以解决问题,而不是使用字符串 'row' :)

var row = $(this).closest('table').attr('id');
alert(row);

$(document).ready(function() {
oTable = $(row).dataTable( { //<--- here
  "sDom": '<"top"lf>rt<"bottom"ip><"clear">'
});

我最后做了一些额外步骤的混合。不是最干净的,但它正在工作。

首先,在动态 tab/table 上,我为新 ID 创建了一个变量,因为我的选项卡和 table ID 相同:

PHP:

$tableid = $nospaces .'table';
echo '<table class="table table-striped table-bordered table-hover" id="'.$tableid.'">';

然后我在选项卡上初始化(并销毁)数据table,如下所示:

JQuery:

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
tab = e.target.hash // newly activated tab
tabtable = tab + 'table'

$(document).ready(function() {
    oTable = $(tabtable).dataTable( {
        "sDom": '<"top"lf>rt<"bottom"ip><"clear">'
    });
});
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
    oldtab = e.relatedTarget.hash
    oldtable = oldtab + 'table'
    $(oldtable).dataTable().fnDestroy();
    });
});