当创建和销毁都是AJAX时,在DOM中找不到ID
ID not being found in DOM when both create and destroy are AJAX
我遇到了一个问题,我允许我的用户创建一个项目,但他们也可以从同一页面删除该项目。
目前,当用户添加项目时,它是通过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();
相关文章:
- 未捕获错误:元素缓存中id为x的DOM元素与DOM中的元素不同
- 当创建和销毁都是AJAX时,在DOM中找不到ID
- DOM元素的Dojo委托's的ID
- 为什么可以't我通过ID访问这个动态加载的DOM元素(没有iframe)
- DOM元素上动态创建的ID的排序一致性
- 自动生成唯一的DOM ID
- 有没有一种通用方法可以通过Javascript访问没有id的DOM元素
- 查找 DOM 上具有“id”属性的所有元素
- 克隆并附加唯一 ID 后找不到 DOM 元素
- 将 jQuery 事件应用于两个 DOM ID 的选择器
- 如何使用 javascript 返回 DOM 元素的 id,而不是元素的值
- 如果我知道按钮的 id,如何使用 javascript 设置 DOM 按钮的标题
- AngularJS - 动态 DOM 操作,无需在控制器中硬编码 dom id
- 如何在javascript中动态编写对象时注册DOM id
- 从DOM ID中删除非法字符的Javascript正则表达式
- javascript:错误组合DOM "id"和“;name"
- 仅在IE上,表单DOM id返回“”;为空或不是对象“;问题
- 在javascript中,如何将电子邮件地址转换为有效的DOM id
- Dojo允许更改dom id或widgetid吗?
- 当我可以直接引用 JavaScript 中的 DOM id 时,为什么要使用 document.getElementBy