我正试图从主视图表单执行JavaScript,当我点击渲染部分中的复选框时,从渲染部分执行JavaScript,但该JavaScript没有执行。只有当我在主视图中复制分部的内容时,它才会执行。我搜索过这个网站,但找不到答案。这就是我所拥有的,例如:
app/views/people/main_form.html.erb
<script>
view something in partal
$('people_visible_by_default').click(function(){
alert("Can you see me");
});
</script>
<%= bootstrap_nested_form_for @people, html: { class: 'form-horizontal', id: 'people_edit_form' } do |f| %>
<%= render partial: 'form_partial', locals: { f: f } %>
<% end %>
要在app/views/people_form_partial.html.erb 中执行的复选框
<%= f.check_box :visible_by_default, data: { preview_type: 'none' } %>
clicking on the visible_by_default checkbox doesn't show the alert as I expected. How do I get it to execute when it is in the main_form.html.erb
我猜您正在使用复选框的id("people_visible_by_default")作为jQuery中的选择器。但你忘了在它前面加上"#"。
所以,试试
$('#people_visible_by_default').click(function(){
//your code
});
或
$('#your_form_ID').on('click', '#people_visible_by_default', function(){
//your code
});
首先,在加载主页面时应该使用选择器。Js在加载主页时迭代dom元素。所以,如果您通过事件来呈现某个东西(页面加载开始时不存在的东西),就没有js处理程序。但您可以使用渲染部分的父元素的选择器。例如:
view.html.slim:
.parent_class
= bootstrap_nested_form_for @people, html: { class: 'form-horizontal', id: 'people_edit_form' } do |f|
= render partial: 'form_partial', locals: { f: f }
view.js.coffee
$('.parent_class').on 'click', '#people_visible_by_default', (e) ->
do something
试试这个。我希望它能帮助你