1

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

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

这就是我的代码的样子(它是用 ruby​​ 编写的,因为我在 rails 上使用了 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();
}); 

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

4

1 回答 1

3

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

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

从那里获得链接的父级,然后从那里获得上一个 td 。

于 2013-04-10T23:35:38.923 回答