Rails AJAX调用无法销毁创建的虚拟记录

时间:2019-05-20 19:10:33

标签: javascript jquery

在下面的方框中

$(document).on('turbolinks:load', function() {
  $('[data-js-usercontent-form]').on("ajax:success", function(event, data, status, xhr){
    var usercontent = $(xhr.responseText).hide();
    $('#usercontents').append(usercontent);
    usercontent.fadeIn(1000);
    document.getElementById('data-js-usercontent-form').reset();
  });

  $('[data-js-usercontent-id]').on("ajax:success", function(event, data, status, xhr){
    var usercontent_id = xhr.responseJSON.id;
    $('[data-js-usercontent-id=' + usercontent_id + ']').hide();
  });
});

一个创建用户内容,它会通过fadeIn出现。
可以删除一个用户内容,它将被隐藏。好吧,在某些情况下。

删除操作适用于在页面呈现时已创建的用户内容,因为javascript具有usercontent_id可以隐藏在页面代码中...
如果创建了一条记录并通过AJAX显示,则在刷新页面之前无法删除该记录。

是否有这种解决方案(除了页面刷新)?

1 个答案:

答案 0 :(得分:1)

我认为这是使用jQuery动态创建的元素上的经典事件绑定。

您应将事件绑定在[data-js-usercontent-id]父标记中。例如,如果$('#usercontents')[data-js-usercontent-id]标签的父元素,则脚本将如下所示:

$('#usercontents').on('ajax:success', '[data-js-usercontent-id]',  function(event, data, status, xhr){
  var usercontent_id = xhr.responseJSON.id;
  $('[data-js-usercontent-id=' + usercontent_id + ']').hide();
});

您可以检查this response以获得更详细的答案。