无法从 jQuery DataTable 中触发模式



我在页面的结束正文标签之前有一个通用模态。我使用 Javascript 在单击按钮时显示模态,将嵌入在按钮中的数据属性值传递给模态标题、正文和页脚。这使得模态动态。它工作得很好,但是,当我在jQuery数据表中添加触发按钮时,它无法触发模态。

这是我的模态:

<div class="modal fade" id="modal_confirm_action" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title"></h5>
                <div class="pull-right m-l-15">
                    <button class="btn btn-danger btn-sm modal_close_btn" data-dismiss="modal" class="close" title="Close"> &times;</button>
                </div>
            </div><!--/.modal-header-->
            <div class="modal-body">
                <!--render data via JS-->
            </div>
            <div class="modal-footer">
                <a class="btn btn-sm btn-danger" role="button" id="action_url"> Yes, Continue </a>
                <button data-dismiss="modal" class="btn btn-sm btn-secondary"> No, Cancel </button>
            </div>
        </div>
    </div>
</div>

这是触发它的按钮:

<a class="btn btn-sm btn-danger text-white modal_trigger_confirm_action" data-title="Delete Post" data-msg="Sure to delete?" data-url="'.base_url('posts/delete_post/'.$id).'">Delete</a>

注意:我正在将服务器端处理与DataTables(和CodeIgniter(一起使用,因此上面的按钮位于我的控制器方法中,并在一列中呈现,如下所示:

...
$row[] = '<a class="btn btn-sm btn-danger text-white modal_trigger_confirm_action" data-title="Delete Post" data-msg="Sure to delete?" data-url="'.base_url('posts/delete_post/'.$post_id).'">Delete</a>';
...

这是打开模态的 JavaScript:

$('.modal_trigger_confirm_action').click(function() {
    //get data value params
    var title = $(this).data('title'); 
    var msg = $(this).data('msg'); 
    var url = $(this).data('url');
    $('#modal_confirm_action .modal-title').text(title); //dynamic title
    $('#modal_confirm_action .modal-body').html(msg); //dynamic body content
    $('#modal_confirm_action .modal-footer #action_url').attr('href', url); //url to delete item
    $('#modal_confirm_action').modal('show'); //show the modal
});

单击每行中的"删除"按钮不会执行任何操作。我做错了什么?

因为按钮是动态生成的,而不是第一次加载时 DOM 的一部分,所以你需要触发点击那个动态生成的按钮,就像这样。

$(document).on( "click",".modal_trigger_confirm_action", function() { //logic here });

请尝试以下操作:

$( ".modal_trigger_confirm_action" ).on( "click", function() {
  // your logic here
});

最新更新