jQuery 触发嵌套形式的所有实例 rails 茧
jQuery trigger all instances on a nested form rails cocoon
我有一个表单,其中包含使用 cacoon 的嵌套字段
我有默认字段和一个条件,如果选择了一个选项即显示更多字段。火箭联盟如此
但是,正如您从屏幕截图中看到的那样,实际上只有一个锦标赛排名实例正在切换字段。
所以我的问题是,如何让每个实例都发生变化?
这是我的代码:
$(document).on("change", ".ts_select", function(event) {
if (this.value == '1') {
$('#default-fields').hide()
$('#rocket-fields').show()
} else {
$('#default-fields').show()
$('#rocket-fields').hide()
}
})
<div id="default-fields" class="grid grid-cols-1 md:grid-cols-4">
<%= render partial: "tournaments/fpartials/default", tournament: @tournament, locals: { f: f } %>
</div>
<div id="rocket-fields" class="grid grid-cols-1 md:grid-cols-4 hidden">
<%= render partial: "tournaments/fpartials/rocket_league_fields", tournament: @tournament, locals: { f: f } %>
</div>
您正在使用的 jQuery 选择器会选择第一个匹配的 HTML 元素。因此,在您的情况下,您选择的是 ID 为 'default-fields' 和 'rocket-fields'.
的第一个 div
假设您的所有团队字段都包含在具有这些 ID 的 div
中,您可以使用不同的选择器来查找 all 个实例:
$("[id='default-fields']").hide();
$("[id='default-fields']").show();
如果您想了解有关选择器工作原理的更多信息,请查看 jQuery documentation。
在 html 中,您有 id
,它们是唯一的,并且只在一个页面上出现一次,并且您有 classes
。在您的情况下,您似乎正在使用 id
来重复元素。
虽然这在视觉上可能有效,但在发布表单时您会遇到问题(因为在收集表单数据时仅收集假定的唯一元素)。
所以最好的解决方案是改用 类,并相应地调整您的代码。
$(document).on("change", ".ts_select", function(event) {
if (this.value == '1') {
$('.default-fields').hide()
$('.rocket-fields').show()
} else {
$('.default-fields').show()
$('.rocket-fields').hide()
}
})
我有一个表单,其中包含使用 cacoon 的嵌套字段
我有默认字段和一个条件,如果选择了一个选项即显示更多字段。火箭联盟如此
但是,正如您从屏幕截图中看到的那样,实际上只有一个锦标赛排名实例正在切换字段。
所以我的问题是,如何让每个实例都发生变化?
这是我的代码:
$(document).on("change", ".ts_select", function(event) {
if (this.value == '1') {
$('#default-fields').hide()
$('#rocket-fields').show()
} else {
$('#default-fields').show()
$('#rocket-fields').hide()
}
})
<div id="default-fields" class="grid grid-cols-1 md:grid-cols-4">
<%= render partial: "tournaments/fpartials/default", tournament: @tournament, locals: { f: f } %>
</div>
<div id="rocket-fields" class="grid grid-cols-1 md:grid-cols-4 hidden">
<%= render partial: "tournaments/fpartials/rocket_league_fields", tournament: @tournament, locals: { f: f } %>
</div>
您正在使用的 jQuery 选择器会选择第一个匹配的 HTML 元素。因此,在您的情况下,您选择的是 ID 为 'default-fields' 和 'rocket-fields'.
的第一个div
假设您的所有团队字段都包含在具有这些 ID 的 div
中,您可以使用不同的选择器来查找 all 个实例:
$("[id='default-fields']").hide();
$("[id='default-fields']").show();
如果您想了解有关选择器工作原理的更多信息,请查看 jQuery documentation。
在 html 中,您有 id
,它们是唯一的,并且只在一个页面上出现一次,并且您有 classes
。在您的情况下,您似乎正在使用 id
来重复元素。
虽然这在视觉上可能有效,但在发布表单时您会遇到问题(因为在收集表单数据时仅收集假定的唯一元素)。
所以最好的解决方案是改用 类,并相应地调整您的代码。
$(document).on("change", ".ts_select", function(event) {
if (this.value == '1') {
$('.default-fields').hide()
$('.rocket-fields').show()
} else {
$('.default-fields').show()
$('.rocket-fields').hide()
}
})