我试图找到 parent 的 sibling ,但出现了一个奇怪的现象。在初始化 jQuery DataTables 之前,我可以毫无问题地获取表的 ID。但是在初始化之后,即建表后,我就无法再获取ID了。
HTML:
<h2 class="sub-header">Chart
<button type="button" class="btn btn-success">Hide</button>
<button type="button" class="btn btn-success">PDF</button>
<button type="button" class="btn btn-success">CSV</button>
<button type="button" class="btn btn-success">Share</button>
<button type="button" class="btn btn-success" id="config_1">Config</button>
</h2>
<table id="chartTable_1" class="display" cellspacing="0" width="100%"></table>
Javascript:
$("#config_1").click(function(event)
{
$('#chartConfigModal').modal("show");
openedConfig = $(this).parent().siblings().closest("table").attr('id');
console.log(openedConfig);
});
基本上#config_1是一个按钮的ID。当按下此按钮时,它将获取该特定按钮的位置,并向上移动到父级,即 H2,然后获取最近的兄弟表,并获取其 id。
所有这些都在表初始化之前起作用。
var table = $('#'+String(response.chartID[i])).DataTable({
stateSave: true,
aoColumnDefs: aryJSONColTable,
processing: true,
serverSide: true,
bDestroy: true,
ajax:
{
type: 'GET',
url:"ajax_retrieveMainChartData/",
dataType: 'json',
data:
{
'csrfmiddlewaretoken':csrftoken,
'activeTab':activeTab,
'chartID':response.chartID[i],
},
},
rowCallback: function(row, data)
{
if ($.inArray(data.DT_RowId, mainChartSelected)!== -1)
{
$(row).addClass('selected');
}
},
如果我按查看源代码,我仍然会得到准确的 html:
<h2 class="sub-header">Chart
<button type="button" class="btn btn-success">Hide</button>
<button type="button" class="btn btn-success">PDF</button>
<button type="button" class="btn btn-success">CSV</button>
<button type="button" class="btn btn-success">Share</button>
<button type="button" class="btn btn-success" id="config_1">Config</button>
</h2>
<table id="chartTable_1" class="display" cellspacing="0" width="100%"></table>
创建表后,再次尝试获取表的属性id时。这不起作用。为什么要这样做?
---更新---
初始化后我做了一个console.log($(this).parent().siblings());
[div#chartTable_1_wrapper.dataTables_wrapper.no-footer, prevObject: n.fn.init[1], context: button#config_1.btn.btn-success, jquery: "2.1.1", constructor: function, selector: ""…]0: div#chartTable_1_wrapper.dataTables_wrapper.no-footercontext: button#config_1.btn.btn-successlength: 1prevObject: n.fn.init[1]__proto__: Object[0]
然后是初始化之前的console.log($(this).parent().siblings());
[table#chartTable_1.display, prevObject: n.fn.init[1], context: button#config_1.btn.btn-success, jquery: "2.1.1", constructor: function, selector: ""…]0: table#chartTable_1.display.dataTable.no-footercontext: button#config_1.btn.btn-successlength: 1prevObject: n.fn.init[1]__proto__: Object[0]
我有两个不同的 sibling 。原来的ID好像已经不存在了。
最佳答案
试试这个:
$(this).parent().next("table").attr('id');
关于javascript - jQuery - 使用 jQuery DataTables 获取父级 sibling 的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26225928/