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()を読む

要素は動的に追加されるため、イベントをそれらに直接バインドすることはできません。そのため、 Event Delegationを使用する必要があります。

$('#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 に答える