在下面的方框中
$(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显示,则在刷新页面之前无法删除该记录。
是否有这种解决方案(除了页面刷新)?
答案 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以获得更详细的答案。