javascript - jQuery - 使用 jQuery DataTables 获取父级 sibling 的 ID

标签 javascript jquery

我试图找到 parent 的 sibling ,但出现了一个奇怪的现象。在初始化 jQuery DataTables 之前,我可以毫无问题地获取表的 ID。但是在初始化之后,即建表后,我就无法再获取ID了。

HTML:

<h2 class="sub-header">Chart
    &nbsp;&nbsp;&nbsp;
    <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
    &nbsp;&nbsp;&nbsp;
    <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/

相关文章:

javascript - JSON 数组 - 显示数据所需的帮助

javascript - iframe 超出父网页中的 div

javascript - AngularJS 如何从另一个 Controller 调用 div 上的 ng-show

javascript - 使 Webpack 输出文件相对于输入文件

javascript - 表列跨度值的jquery设置值

javascript - 初始化对象的编码模式 - 构造函数(新)与 Object.create() (Crockford)

javascript - 如何在前端截取包含用户上传图片的 div 的屏幕截图?

php - 帖子内容中的目标图像

javascript - 最简单的表格条目编辑/添加/删除 Web 工具包(与 php 一起使用)

javascript - 使用 Mongoose 在字段的子字符串上填充