【问题标题】:Edit jQuery Datatable fields编辑 jQuery 数据表字段
【发布时间】:2015-02-12 10:32:07
【问题描述】:

我想为 JQuery 数据表中的一个字段值输出一个引导标签。此字段的可能值可以是“0”或“1”,根据结果我想决定我想在数据表中输出哪个引导标签。不幸的是,我不知道如何针对这种情况执行此 if 语句。

我的 JQuery:

$(document).ready(function() {  
    $('#accountOverview').dataTable( {
        "ajax": {
            "url": "/database/accounts.php",
            "data": {"action": "selectAccounts"},
            "dataSrc": ""
        },
        "columns": [
            { "data": "email" },
            { "data": "platform" },
            { "data": "coins" },
            { "data": "profitDay" },
            { "data": "playerName" },
            { "data": "tradepileCards" },
            { "data": "tradepileValue" },
            { "data": "enabled" }
        ],
        "autoWidth": false
    });
});

我需要对“启用”字段的结果使用类似的东西:

if(enabled==1) <label class="label label-success">Online</label>
else <label class="label label-error">Offline</label>

HTML 表格:

<table id="accountOverview" class="table datatable">
    <thead>
        <tr>
            <th>E-Mail</th>
            <th>Platform</th>
            <th>Coins</th>
            <th>Profit last 24h</th>
            <th>Playername</th>
            <th>Tradepile Cards</th>
            <th>Tradepile Value</th>
            <th>Status</th>
        </tr>
    </thead>
    <tbody id="accountList">
        <!-- List all accounts -->
    </tbody>
</table>

标签需要在字段“状态”=每一行的最后。

【问题讨论】:

  • 您希望标签去哪里(以及它标记的输入元素是什么)?在标签被注入之前table 是什么样的?之后应该是什么样子?
  • 我已经编辑了我的问题并添加了信息。该表是由上面的 jQuery 部分创建的。最后一个 (也就是当该字段的 SQL 查询结果为 '1' 时,字段状态应如下所示: else :

标签: javascript jquery jquery-datatables


【解决方案1】:

按照 dataTable 的“绘制”(在 AJAX 加载数据之后发生),您可以查找每行的最后一个 td 并使用 wrapInner() 注入您想要的 HTML。因此,在您的情况下,请尝试:

var apply_label=function(){
    $('#accountOverview').find('td:last-child').not(':has(.label)').each(function(){
        if( this.innerHTML==="1"){
            $(this).wrapInner('<span class="label label-success"></span>');
        }
        else {
            $(this).wrapInner('<span class="label label-danger"></span>');
        }
    });
};
$('#accountOverview').dataTable( {
    "ajax": {
        "url": "/database/accounts.php",
        "data": {"action": "selectAccounts"},
        "dataSrc": ""
    },
    "columns": [
        { "data": "email" },
        { "data": "platform" },
        { "data": "coins" },
        { "data": "profitDay" },
        { "data": "playerName" },
        { "data": "tradepileCards" },
        { "data": "tradepileValue" },
        { "data": "enabled" }
    ],
    "autoWidth": false,
    "drawCallback": function( settings ) {
        apply_label();
    }
});

注意事项:

  1. 我想你想要span(不是label)。
  2. 我想你想要.label-danger(不是.label-error)。

Check it out at http://jsfiddle.net/jhfrench/wrkkbcf1/.

【讨论】:

  • 感谢这个想法!我试过这个,但它对我不起作用。我想这是因为我通过 Ajax 请求加载了所有数据,并且它在数据表完全创建之前寻找 tds 还是什么?它只是无所事事。
  • 您正在处理的内容的 URL 是否公开?我可以看看吗?
  • 我需要导入 AJAX 页面的链接(由于跨域安全限制,我不能只将您的 URL 插入 jsFiddle)。
  • 更新了使用drawCallback (datatables.net/reference/option/drawCallback) 的答案。用你的原型测试了这个解决方案,它可以工作。
  • 这很好用。感谢您的这项工作,很抱歉这么晚才接受答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
相关资源
最近更新 更多