数据表,如何在表的所有行上绑定事件

时间:2013-03-08 11:37:50

标签: jquery datatables

我的数据表工作正常,除了我试图在每一行上添加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事件对于那些未在第一页中显示的行不起作用。

任何人都可以帮助解决这个谜团吗? 感谢

3 个答案:

答案 0 :(得分: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
});

答案 1 :(得分:3)

如果您需要一个不同但相似的场景来绑定到datatable中的所有特定类,请参阅下面的示例

Console.WriteLine()

还考虑关注此问题的官方文档:

  

解决这个问题的最佳方法之一就是使用   委托事件与jQuery的方法

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

答案 2 :(得分: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
    });

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