用于多个表单元素的相同 jQuery 函数。我该如何巩固
如果选中多个复选框,我需要显示和隐藏 div。
需要显示的每个 div 的 id 将与复选框名称相同。有没有一种简单的方法可以完成此任务,而无需编写函数来处理每个复选框?
$('input[name=checkbox_1]').click(function() {
if ($('input[name=checkbox_1]').is(':checked')) {
$('#checkbox_1').show('slow');
}
else {
$('#checkbox_1').hide('slow');
}
});
$('input[name=checkbox_2]').click(function() {
if ($('input[name=checkbox_2]').is(':checked')) {
$('#checkbox_2').show('slow');
}
else {
$('#checkbox_2').hide('slow');
}
});
});
I have this need to show and hide a div if a checkbox is checked for multiple checkboxes.
Each div's id that needs to be shown will be the same as the checkboxes name. Is there an easy way to accomplish this without writing a function to handle each checkbox?
$('input[name=checkbox_1]').click(function() {
if ($('input[name=checkbox_1]').is(':checked')) {
$('#checkbox_1').show('slow');
}
else {
$('#checkbox_1').hide('slow');
}
});
$('input[name=checkbox_2]').click(function() {
if ($('input[name=checkbox_2]').is(':checked')) {
$('#checkbox_2').show('slow');
}
else {
$('#checkbox_2').hide('slow');
}
});
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以从名称中获取 ID,如下所示:
这使用 attribute-starts-使用选择器获取输入,然后使用其
.name
property 通过 ID 获取适当的元素。如果选中,则在具有该 ID 的元素上运行.show('slow')
,否则运行.hide('slow')
。You can get the ID from the name, like this:
This uses the attribute-starts-with selector to get the inputs, then uses their
.name
property to get the appropriate element by ID. If it's checked, runs.show('slow')
, otherwise.hide('slow')
on the element with that ID.编辑:使用“开始于”选择器会比检查indexOf更好,就像其他人所说的那样
Edit: Using the 'starts with' selector would be better than checking the indexOf, like others said
看起来您正在进行某种类型的命名约定。您只需进入当前上下文对象,获取名称并按照约定进行操作即可。您可能想要为您的复选框字段提供一些特殊的 css 类,以便于轻松选择:
It looks like you have some type of naming convention going on. You can just reach into the current context object, get the name and work your convention. You might want to give your checkbox fields some special css class to make for easy selection:
您可以在此处使用
toggle()
而不是if ... else
来进一步减少代码:Toggle 还可以在交替点击时运行不同的功能,而不仅仅是隐藏/显示元素:
You can use
toggle()
instead ofif ... else
here to further reduce code:Toggle can also run different functions on alternate clicks instead of just hiding/showing elements: