9

我的数据表工作正常,除了我试图dblclick在每一行上添加一个功能,这部分工作。

所以,这是我的代码:

oTable = $('#example').dataTable({
    "aaSorting": [[ 1, "desc" ]],
    "bJQueryUI": true,
    "sPaginationType": "full_numbers"
});

/* Add a click handler to the rows */

//This highlights the row selected
$("#example tbody").click(function(event) {
        $(oTable.fnSettings().aoData).each(function (){
                $(this.nTr).removeClass('row_selected');
        });
        $(event.target.parentNode).addClass('row_selected');
});

//this attaches a dblclick event on the row
$("#example tr").dblclick(function() {
        var iPos = oTable.fnGetPosition( this );
        var aData = oTable.fnGetData( iPos );
        var iId = aData[1];
        $('#edit'+iId).click(); //clicks a button on the first cell
});

行的突出显示对于表的所有行都可以,但dblclick仅适用于最初在第一页中呈现的行。当我对数据进行排序/搜索并且显示的数据发生更改时,该dblclick事件不适用于第一页中未显示的那些行。

谁能帮忙解开这个谜?谢谢

4

3 回答 3

20

第一个答案近乎完美,但必须进行一些小调整才能使其无法正常工作。

就像在 jquery apidoc on()中一样,您必须[, selector ]像我在下面那样添加"tr"

$("#example").on("dblclick", "tr", function() {
        var iPos = oTable.fnGetPosition( this );
        var aData = oTable.fnGetData( iPos );
        var iId = aData[1];
        $('#edit'+iId).click(); //clicks a button on the first cell
});
于 2013-03-08T12:42:27.110 回答
3

如果您需要不同但相似的场景来绑定到数据表中的所有特定类,请参见下面的示例

$("#sample_2 tbody").on("click", "a.ApproveLink", approveLinkHandler);

还可以考虑以下有关此问题的官方文档:

处理此问题的最佳方法之一是使用 委托事件和 jQuery 的 on 方法

https://datatables.net/examples/advanced_init/events_live.html

于 2016-12-18T12:46:24.620 回答
1

试试这个

  $("#example tbody").on("click",function(event) {
        $(oTable.fnSettings().aoData).each(function (){
                $(this.nTr).removeClass('row_selected');
        });
        $(event.target.parentNode).addClass('row_selected');
});


  $("#example tr").on("dblclick",function() {
            var iPos = oTable.fnGetPosition( this );
            var aData = oTable.fnGetData( iPos );
            var iId = aData[1];
            $('#edit'+iId).click(); //clicks a button on the first cell
    });

我们可以直接在页面加载时加载的数据上使用事件。其他我们需要使用

于 2013-03-08T11:48:50.500 回答