通过JQuery获取动态内容的ID


Getting ID via JQuery for dynamic content

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

PHP:

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

该表完美地加载了数据,但是我在初始化用于排序和筛选的数据表时遇到了问题。通常在静态表上,我只会使用静态ID初始化它,但在这种情况下我不能这样做。

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

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">'
});

我最终用一些额外的步骤进行了混合。不是最干净的,但它在起作用。

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

PHP:

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

然后我初始化(并销毁)选项卡上的数据表,点击如下:

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();
    });
});