我在Laravel中使用Laravel Datatable创建一个带过滤器的数据表。我也需要一个自定义列,所以我添加了这段代码:
->addColumn('estado', function ($previsitas) {
return $previsitas->f_salida ? '<a id="delete" class="text-danger" data-toggle="tooltip" data-placement="top" title="Cambiar estado" href="' . route('visitas.estado', [$previsitas->id]) . '"><strong>Salida</strong></a>' :'<a class="text-success" data-toggle="tooltip" data-placement="top" title="Cambiar estado" href="' . route('visitas.estado', [$previsitas->id]) . '"><strong>Entrada</strong></a>';
})->rawColumns(['estado'])
此代码完美无缺。我也需要调用此列来提示sweetalert的消息。我用这个......
$('#delete').click(function () {
swal('Test');
});
当我在列中单击时没有任何反应,但是当我在刀片中直接创建带有id ='delete'的元素时。
所以错误很简单:我无法在datatable列中调用带有id的元素,但是如果直接在刀片中使用,我可以调用该元素。为什么会出现这种错误?
答案 0 :(得分:1)
我认为你需要为此使用jQuery事件委托。目前,调用$("#delete").click(...)
将一个click
事件分配给DOM元素$("#delete")
,该元素在分配时不存在。如果您将click
事件分配给目标为"body"
的{{1}},则此功能适用于您:
"#delete"
答案 1 :(得分:0)
此代码
$('#delete').click(function () {
swal('Test');
});
可能正在执行
->addColumn('estado', function ($previsitas) {
return $previsitas->f_salida ? '<a id="delete" class="text-danger" data-toggle="tooltip" data-placement="top" title="Cambiar estado" href="' . route('visitas.estado', [$previsitas->id]) . '"><strong>Salida</strong></a>' :'<a class="text-success" data-toggle="tooltip" data-placement="top" title="Cambiar estado" href="' . route('visitas.estado', [$previsitas->id]) . '"><strong>Entrada</strong></a>';
})->rawColumns(['estado'])
添加到DOM