基于事件在循环中隐藏元素
Hiding element in loop based on event
在我的表格中,我有五个类似的无线电组:
<label class="radio-inline"><input type="radio" name="persontype1" value="fo" checked="checked">FO</label>
<label class="radio-inline"><input type="radio" name="persontype1" value="po">PO</label>
然后我有一个循环来隐藏/显示其他元素,基于这些单选按钮的更改事件:
for (i = 1; i <= 5; i++) {
$("input[type=radio][name=persontype" + i + "]").change(function() {
if (this.value == 'fo') {
$("#person-name" + i).removeClass('hidden');
}
else if (this.value == 'po') {
$("#person-name" + i).addClass('hidden');
}
});
}
问题是它不是这样工作的。当我在选择器中使用绝对ID值名称时,它起作用:
$("#person-name1").addClass('hidden');
我尝试过使用一些全局变量,但也不起作用。有没有办法将变量i传递给该函数?
提前感谢JiKra
将代码封装在一个封闭的IIFE(立即调用的函数表达式)中:
for (i = 1; i <= 5; i++) {
(function(i){
$("input[type=radio][name=persontype" + i + "]").change(function() {
if (this.value == 'fo') {
$("#person-name" + i).removeClass('hidden');
}
else if (this.value == 'po') {
$("#person-name" + i).addClass('hidden');
}
});
})(i);
}
这将为内部i
(函数的参数)提供一个函数范围。
不过,使用单个事件处理程序并具有属性来确定哪个是哪个更有意义:)
// Match on starts-with "persontype" using ^=
$("input[type=radio][name^=persontype]").change(function() {
var target = $(this).data('target');
// Do something to the target
});
相关文章:
- 基于事件在循环中隐藏元素
- 如何在php循环中显示隐藏的数据类型
- 在PHP循环中显示/隐藏
- 如何在 html 和 javascript 中显示隐藏不确定的循环进度条
- 循环后如何删除/隐藏图像
- TypeError:分析隐藏值时,javascript中的循环对象值
- jQuery 循环 如果只有一张幻灯片,则隐藏上一个/下一个导航
- 使用 while 循环时显示隐藏的内容
- 如何使用循环访问值隐藏元素
- 使用 For 循环使隐藏的表行在填充时显示
- jQuery循环为每个“drop”生成隐藏字段
- 来自 PHP foreach 循环的隐藏输入值未正确传递给 JQuery
- 使用日期循环 jquery 隐藏元素
- 在循环访问集合时将动态 ID 分配给隐藏字段
- 循环浏览选项,包括隐藏选项
- JSTL:foreach 循环将值设置为隐藏变量始终返回零
- Javascript循环-隐藏动画分区
- 显示和隐藏循环中的延迟,但没有动画
- 使用javascript选择另一个选项后,循环隐藏选项不起作用
- 高级jquery循环隐藏导航