使用jquery显示以前的td元素

时间:2013-04-10 23:34:01

标签: javascript jquery ruby-on-rails-3 javascript-events

我知道这个问题已被问过100亿次......我已经考虑过它们并且尽我所能。

基本上,我有一个文本字段,只有在单击按钮时才会呈现。

这就是我的代码看起来的样子(因为我在rails上使用了ruby,所以它是ruby中的写法)..这也是部分的,所以这段代码会在一个页面上反复显示。

<td class=search-form-block>
  <%= form_tag({:controller => "foods", :action => "save_selected"}, method: "post") %>
  <%#= text_field_tag 'search_food_text_field', nil, data: { catcomplete_source: search_foods_path } %>

  <%= text_field_tag 'search_food_text_field', nil, data: { catcomplete_source: search_foods_path } %>

</td>
<td class=remove-td-center> <%= link_to "new food", nil,  {class: "new-food-button"} %>     </td>    

这是从源代码看起来的样子:

<td class=search-form-block>
  <form accept-charset="UTF-8" action="/foods/save_selected" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="nj7UzUO00UwgC0eeZk2GpZiKqz6PPTvLST1mINZCDR4=" /></div>

  <input data-catcomplete-source="/foods/search" id="search_food_text_field" name="search_food_text_field" type="text" />

</td>
<td class=remove-td-center> <a href="/meals/5" class="new-food-button">new food</a> </td> 

这是我预测会发挥作用的jquery但是没有:

 $('.search-form-block').hide()

$('.new-food-button').click(function(e){
    e.preventDefault();
    $(this).prev('td').toggle();
}); 

我遇到的问题是,当我点击切换按钮时,页面上的所有表格都会被切换。我只希望呈现该特定按钮的表单。

提前致谢!

1 个答案:

答案 0 :(得分:3)

问题是点击事件中的this。在您的函数this中,引用的是link而不是td。所以要获得之前的td,你需要这样的东西:

$(this).parent().prev('td').toggle();

在哪里获得链接的父级,然后是之前的td。