Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Rails 4 JS TypeError:$(…)。previous不是函数_Javascript_Jquery_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Javascript Rails 4 JS TypeError:$(…)。previous不是函数

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

我试图在一个文本字段下创建一个名为remove的链接,以使用java脚本销毁和隐藏它,但它不起作用,我在控制台
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();
  • PrototypeJS的
    previous
    搜索元素以前的同级元素以查找匹配项。jQuery没有一个函数可以完全做到这一点(它的函数只查看前一个同级,不进行扫描),但您可以合并(它构建一个所有前一个同级的列表,按照顺序,第一个同级是最接近原始元素的一个),并且,您得到的东西实际上与PrototypeJS的
    之前的
    相同

    然后,要设置值,您可以使用函数,而不是指定给
    属性。PrototypeJS装饰实际的DOM元素;另一方面,jQuery基于集合论并封装元素。因此,jQuery实例没有DOM属性,但它们具有操作它们所包含的DOM元素的函数

  • 在第二行,jQuery没有
    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();
    }