动态生成的按钮不适用于Javascript

时间:2017-04-21 08:44:31

标签: javascript jquery laravel blade

我有一个动态生成的表。像这样:

<thead>
<tr>
<th>Task</th>
<th>options</th>
</tr>
</thead>
<tbody id="tasks-list">
@foreach($tasks as $task)
<tr id="contact_{{$contact->id}}">
<td>{{task->name}}
 <td><button class="btn btn-warning btn-xs btn-detail open-modal" value="{{$contact->id}}">Edit</button>
<button class="btn btn-danger btn-xs btn-delete delete-task" value="{{$contact->id}}">Delete</button></td>
</tr>
@endforeach
 </tbody>
</table>

然后我有一个按钮用AJAX添加新任务。

当成功添加任务时,会附加包含最近创建的信息的新行:

 var task = '<tr id="contact_' + data.id + '">' +'<td>' + data.name + '</td>' +
'<td><button class="btn btn-warning btn-xs btn-detail open-modal" value="' + data.id + '">Editieren</button><div style="margin-left: 3px"' +
'<button class="btn btn-danger btn-xs btn-delete delete-task" value="' 
+ data.id + '">Löschen</button></td></tr>';

 $('#tasks-list').append(task);

这很好用。一切都正确附加,按钮具有与Blade生成的相同的特性。 Ids也是正确的,没有区别。当我点击编辑或删除时,我得不到任何回复。甚至在控制台中都没有错误。当我刷新网站时按钮工作,所以存储的信息实际上是正确的。

任何帮助都将不胜感激。

编辑:处理程序

   $('.delete-task').click(function(){
        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        })
        var task_id = $(this).val();

        $.ajax({
            type: "DELETE",
            url: '/task_edit/' + task_id,
            success: function (data) {
                console.log(data);
                $("#contact_" + contact_id).remove();
            },
            error: function (data) {
                console.log('Error:', data);
            }
        });
    });

1 个答案:

答案 0 :(得分:1)

你不能这样做,你必须使用委托。

示例

$(document).on('click','.delete-task',function(){
    //your business here
}); 

或使用delegate 这是一个类似的问题 jQuery click function doesn't work after ajax call?