如何将bootstrap.tooltips插件应用于动态生成的元素?

时间:2013-05-30 11:19:15

标签: jquery-plugins twitter-bootstrap datatables twitter-bootstrap-tooltip

我正在尝试使用AJAX Feed中的Datatables创建动态td元素。

以下是该列的相关aoColumnDefs

"aoColumnDefs": [
    {
        "mRender":function(data, type, row) {
            return '<td class="ms">' +
                        '<div class="btn-group1">' +
                            '<a class="btn btn-small" rel="tooltip" data-placement="left" data-original-title="Edit">' +
                                '<i class="gicon-edit"></i>' +
                            '</a> ' +
                            '<a class="btn btn-small" rel="tooltip" data-placement="top" data-original-title="View">' +
                                '<i class="gicon-eye-open"></i>' +
                            '</a>' +
                            '<a class="btn btn-small" rel="tooltip" data-placement="bottom" data-original-title="Remove">' +
                                '<i class="gicon-remove"></i>' +
                            '</a>' +
                        '</div>' +
                    '</td>';
        },
        "aTargets":[7]
    },

正如您所看到的,我需要在创建行后将其处理,以将bootstrap.tooltips插件应用于<a>元素。

以下是我尝试过的,以及jQuery选择器的其他组合:

"fnCreatedRow": function(nRow, aData, iDataIndex) {
    $("a").tooltip();
},

我没有尝试过尝试获取插件以增强我的按钮并且在悬停时显示工具提示,他们拥有正确的CSS,因此它们不可见,因为这个确切的HTML和CSS在静态HTML文件中工作没有动态创建元素。

1 个答案:

答案 0 :(得分:8)

我相信您可以使用 mRender fnCreatedCell 让工具提示与ajax数据源一起使用。请注意数据表reference page并将fnCreatedCellfnCreatedRow进行比较。

HTML

<table id="example" class="table table-condensed">
    <thead>
        <tr>
            <th>Vegetable</th>
            <th>Fruit</th>
            <th>Options</th>
        </tr>
    </thead>
    <tbody></tbody>
</table>

JavaScript (或至少是调用数据表的相关部分)

$('#example').dataTable({
    "aaData": aaData,
    // other set up for datatables left out for the sake of getting to the main issue...
    "aoColumnDefs": [
        { "aTargets": [0],
            "mData": "VegetableName",
            "sWidth": "150px"
        },
        { "aTargets": [1],
            "mData": "FruitName",
            "sWidth": "150px"
        },
        { "aTargets": [2],
            "mData": "LoansOpenedThisDay",
            "mRender": function (data, type, full) {
            // Note: 
            // not manually coding the '<td>' as in the question.           
                return   '<div class="btn-group1">' +
                            '<a class="btn btn-small" rel="tooltip" data-placement="left" data-original-title="Edit">' +
                                '<i class="gicon-edit"></i>' +
                            '</a> ' +
                            '<a class="btn btn-small" rel="tooltip" data-placement="top" data-original-title="View">' +
                                '<i class="gicon-eye-open"></i>' +
                            '</a>' +
                            '<a class="btn btn-small" rel="tooltip" data-placement="bottom" data-original-title="Remove">' +
                                '<i class="gicon-remove"></i>' +
                            '</a>' +
                        '</div>';               
            },
            "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) {
                //  console.log( nTd );
                $("a", nTd).tooltip();
            }
        }
    ],
    // more datatables set up...