Javascript Rails 4 JS TypeError:$(…)。previous不是函数
我试图在一个文本字段下创建一个名为remove的链接,以使用java脚本销毁和隐藏它,但它不起作用,我在控制台Javascript Rails 4 JS TypeError:$(…)。previous不是函数,javascript,jquery,ruby-on-rails,ruby-on-rails-4,Javascript,Jquery,Ruby On Rails,Ruby On Rails 4,我试图在一个文本字段下创建一个名为remove的链接,以使用java脚本销毁和隐藏它,但它不起作用,我在控制台TypeError:$(…)中收到此错误。previous不是一个函数 下面是中的rails代码 app/views/surveys/\u question\u fields.html.erb <p class="fields"> <%= f.label :content, "answer" %><br /> <%= f.text_fie
TypeError:$(…)中收到此错误。previous不是一个函数
下面是中的rails代码
app/views/surveys/\u question\u fields.html.erb
<p class="fields">
<%= f.label :content, "answer" %><br />
<%= f.text_field :content %><br />
<%= f.hidden_field :_destroy %>
<%= link_to_function "remove", "remove_fields(this)" %>
</p>
您的代码看起来像jQuery和PrototypeJS的混合体。(不出意外,PrototypeJS在Ruby社区中已经存在很长一段时间了……) 以下是jQuery版本:
//1
$(link).prevAll(“输入[type=hidden]”).first().val(“1”);
// 2
$(链接)。最近的(“.fields”).hide();
//或者:$(link.parents(“.fields”).first().hide();
//或:$(link.parent().closest(“.fields”).first().hide();
previous
搜索元素以前的同级元素以查找匹配项。jQuery没有一个函数可以完全做到这一点(它的函数只查看前一个同级,不进行扫描),但您可以合并(它构建一个所有前一个同级的列表,按照顺序,第一个同级是最接近原始元素的一个),并且,您得到的东西实际上与PrototypeJS的之前的
相同
然后,要设置值,您可以使用函数,而不是指定给值
属性。PrototypeJS装饰实际的DOM元素;另一方面,jQuery基于集合论并封装元素。因此,jQuery实例没有DOM属性,但它们具有操作它们所包含的DOM元素的函数up
,但是有,它做了类似的事情(尽管在检查选择器时它以当前元素开始)。如果当前元素可能匹配,则需要先与组合,然后再与组合;或者,使用上升一级,然后使用最近的
它是
.prev()
。。。因此,$(link).prev(“input[type=hidden]”
查看jQuery文档中“previous”的搜索结果:。@ArunPJohny我猜它工作正常,因为现在我得到了这个错误类型错误:$(…)。up不是一个函数
知道吗?高级中的thx:)同样的问题,up
在jQuery中不存在。看一下文档,选择正确的方法。这就是文档的目的。或者,作为父级
和第一级
的替代方案:父级
和最近的
。
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
//= require cocoon
function remove_fields(link) {
$(link).previous("input[type=hidden]").value = "1";
$(link).up(".fields").hide();
}