0

我正在使用带有隐藏行的 DataTables 插件,当使用分页时,我的点击事件失败而没有控制台错误。

这是功能:

$(document).ready(function() {

$('#datatable tbody td a').on('click', function (e) {
    e.preventDefault();
    var nTr = $(this).parents('tr')[0];
    if ( oTable.fnIsOpen(nTr) ) {
        /* This row is already open - close it */
        $(this).addClass('glyphicon-arrow-down');
        $(this).removeClass('glyphicon-arrow-up');
        oTable.fnClose( nTr );
    } else {
        /* Open this row */
        $(this).addClass('glyphicon-arrow-up');
        $(this).removeClass('glyphicon-arrow-down');
        oTable.fnOpen( nTr, fnFormatDetails(oTable, nTr), 'details' );
    }
});

});

如您所见,我正在使用委托,但该函数包装在一个就绪函数中。我确定这是问题所在。我该如何解决?

上面的问题被问错了,请看我在答案下的评论。

4

1 回答 1

2

阅读.on()

由于元素是动态添加的,因此您不能将事件直接绑定到它们。因此您必须使用事件委托

$('#datatable').on('click', 'tbody td a', function (e) {});

句法

$( elements ).on( events, selector, data, handler );

下面的代码不是Event Delegation

$('#datatable tbody td a').on('click', function (e) {
于 2013-10-26T16:35:13.020 回答