当创建和销毁都是AJAX时,在DOM中找不到ID

ID not being found in DOM when both create and destroy are AJAX

本文关键字:DOM ID 找不到 AJAX 创建      更新时间:2023-09-26

我遇到了一个问题,我允许我的用户创建一个项目,但他们也可以从同一页面删除该项目。

目前,当用户添加项目时,它是通过create.js.erb添加到网站的,现在我还添加了销毁项目的功能。如果他们点击删除该方法被删除,但我无法将其从网站上删除。

原因是,如果我在控制台中运行$('item-13')f.ex,它在DOM中找不到,因为它是通过AJAX添加的。所以我的问题是,在我的destroy.js.erb中,我有:

$("#item-<%= @current_item %>").remove();

我的摧毁行动:

  def destroy
   @line_item = @cart.line_items.find(params[:id])
    respond_to do |format|
     format.js { @current_item = @line_item.id }
    end
  end

我如何才能在创建项目时找到我附加到显示项目的div的id?

在我重新加载页面后,我可以基于AJAX删除div。

jQuery选择将查看CURRENT dom,即它将包含已使用Ajax添加的对象。

我认为问题是您已经在控制器中定义了处理js请求的块,如下所示:

format.js { @current_item = @line_item.id }

这意味着它不会继续渲染destroy.js.erb——如果没有定义其他操作,这是默认操作。

我会通过将所有内容移动到destroy.js.erb:来解决这个问题

#controller
def destroy
 @line_item = @cart.line_items.find(params[:id])
  respond_to do |format|
   format.js 
  end
end
#destroy.js.erb
$("#item-<%= @line_item.id %>").remove();