通过 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();
});
});
我正在使用 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();
});
});