所以我有一个页面,点击按钮,它打开一个嵌套字段,我想隐藏在点击的字段中的一个div,但到目前为止我的功能不起作用。
我的js文件
$('body').on('click', '#main-applicant-btn', function() {
event.stopPropagation();
var prependData = $('.main-applicant').children().first().clone();
prependData.find("div.checkbox").replaceWith( $( "div.checkbox.hide" ));
var prependedData = $('.main-applicant').children().last();
var list = document.getElementsByClassName("main-applicant");
list.insertBefore(prependData, prependedData);
})
我的applicant.html.erb文件
<div class="form-group">
<%= f.link_to_add "", :applicant_commitments, :class => "glyphicon glyphicon-plus-sign pointer add", :id => "main-applicant-btn", :data => {:target => "#main-applicant-#{rand}"} %>
</label>
</div>
<span id="main-applicant-<%= rand %>" class="main-applicant">
<%= f.simple_fields_for :applicant_commitments do |applicant_commitment| %>
<%= render "existing_commitment_fields", {:f => applicant_commitment, :instalment => true, :type => 'existing_commitment_applicant'} %>
<% end %>
</span>
我的嵌套字段existing_commitment_fields.html.erb
<div class="form-group monthly-instalment-lender-checkbox">
<div class="col-sm-3" id="checkbox-existing-fields">
<div class="checkbox">
<label>
<span>Joint Name</span>
<%= f.input_field :joint_name, as: :boolean, class: "joint-name-commitment" %>
</label>
</div>
</div>
</div>
所以点击后我想要main-applicant-btn
,当它显示nested_fields时,我会隐藏div.checkbox
但是到目前为止,当我尝试这段代码时,我得到错误.insertBefore()不是功能。
任何人都有关于如何在加载后附加或强制javascript运行代码的线索?
答案 0 :(得分:2)
insertBefore
是一种Node方法
document.getElementsByClassName()
方法返回HTMLCollection。
您必须遍历此HTMLCollection或选择其中的一个元素以实际触摸节点并使用其方法:
list[0].insertBefore(...,...)
另外,正如@nnnnnn所提到的,&#34; insertBefore()
方法并不期望将jQuery对象作为参数。&#34;。
所以要么使用像document.querySelector('')
这样的普通javascript方法,要么调用jQuery对象的目标($(...)[0]
)