0

我有一个通过调用部分渲染的项目列表

render @items

每个项目都放在一个 div 中,并有一个 JS '禁用'链接

<div id="item_id_<%=item.id%>
   <%=item.name>
   <%= link_to disable_item_path(item), :remote => true %>
</div>

在控制器内部,我将数据库中项目的标志更改为 False,并希望重新渲染页面并从列表中删除该项目。

我一直在通过 disable.js.coffee 中的以下代码这样做

$('#items_list').html("<%= escape_javascript(render(:partial => @items)) %>")

我的问题:我只想隐藏特定项目 DIV,而不是重新呈现页面上的所有项目(为什么?因为我认为它是更好的编码)。

我怎么做?我尝试将@item_id 传递给coffeescript,并执行类似的操作

$('item_id'+@item_id).hide

但是从这里的阅读来看,这似乎是错误的做法。

谢谢!

4

2 回答 2

1

要简单地隐藏 div,请将其放入您的disable.js.coffee文件中:

$("#item_id_<%= item.id %>").hide()
于 2012-04-12T22:18:03.243 回答
0

为什么不#items为每个子.item类设置一个父 div,然后引用 by$('#items > .item').hide或类似的东西。

此刻你有

<div id="item_id_1">...</div>
<div id="item_id_2">...</div>
<div id="item_id_3">...</div>

等等。

相反,您可以拥有:

<div id="items">
  <div class="item">...</div>
  <div class="item">...</div>
  <div class="item">...</div>
</div>
于 2012-04-12T22:06:57.473 回答