javascript - Laravel yajra/Datatables 操作删除不起作用

标签 javascript jquery datatables laravel-5.1

嘿,我现在正在使用 L5 和 yajra/datatables 插件,一切正常,直到我创建删除按钮来删除记录,删除按钮不起作用
这是我的 Controller :

public function data() 
{
    $news = DB::table('news')
        ->join('users', 'news.user_id', '=', 'users.id')
        ->select(['news.id', 'news.judul', 'news.gambar', 'users.name']);

    return Datatables::of($news)
        ->addColumn('action', function ($id) {
            return '<a href="news/' . $id->id . '/edit" class="btn btn-primary">Edit</a>
            <button class="btn-delete" data-remote="/news/' . $id->id . '">Delete</button>'; 
        })->make(true);
}

这是我的 JS:

var table = $('#news-table').DataTable({
        processing: true,
        serverSide: true,
        ajax: '{!! route('news.data') !!}',
        columns: [
            {
                "className": 'details-control',
                "orderable": false,
                "data": null,
                "defaultContent": ''
            },
            {data: 'id', name: 'news.id'},
            {data: 'judul', name: 'news.judul'},
            {data: 'name', name: 'users.name'},
            {data: 'action', name: 'action', orderable: false, searchable: false}
        ],
        order: [[1, 'asc']]
    });

//problem starts here
$('#news-table').DataTable().$('.btn-delete[data-remote]').on('click', function (e) { 
    e.preventDefault();
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    var url = $(this).data('remote');
    // confirm then
    $.ajax({
        url: url,
        type: 'DELETE',
        dataType: 'json',
        data: {method: '_DELETE', submit: true}
    }).always(function (data) {
        $('#news-table').DataTable().draw(false);
    });
});

btn-delete[data-remote] 的 JS 事件不工作,它在控制台中没有返回错误,但是当我点击它时没有任何反应

最佳答案

它可能不起作用,因为当您将点击事件绑定(bind)到表格时,其中没有任何元素。因此不可能在名为 .btn-delete[data-remote] 的元素上绑定(bind)点击事件。

如果你在表格上绑定(bind)点击事件并让它在点击 .btn-delete[data-remote] 时触发,也许它会起作用,比如:

$('#news-table').on('click', '.btn-delete[data-remote]', function (e) { 
    e.preventDefault();
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    var url = $(this).data('remote');
    // confirm then
    $.ajax({
        url: url,
        type: 'DELETE',
        dataType: 'json',
        data: {method: '_DELETE', submit: true}
    }).always(function (data) {
        $('#news-table').DataTable().draw(false);
    });
});

// or maybe this
$('#news-table').DataTable().on('click', '.btn-delete[data-remote]', function (e) { 
    ...... 
});

关于javascript - Laravel yajra/Datatables 操作删除不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34370240/

相关文章:

javascript - 指向外部 URL 的 Angular 2 链接被视为路由的相对路径

javascript - ASP.NET MVC : Trying to store image url in js variable using razor syntax

javascript - 如何让机器人说角色但不说 ping?

javascript - jQuery ui.selectmenu 未填充

javascript - ng-click 不工作 AngularJS 和数据表

jquery - DataTables自定义日期排序功能

javascript - Kendogrid 列通用模板

javascript - '$(this)' 的成本是多少?

jquery - 无法使用数据表停止初始排序

javascript - 可以将模型传播到组件,但不能传播到 sap.ui.jsfragment