如果至少有一个选定项目具有自定义属性,如何隐藏HTML5分隔符
How to hide HTML5 dividers when if at least 1 selected item has a custom attribute?
我有一个带有多个HTML复选框的表单。只有至少有一个复选框具有名为"terminator"的自定义HTML5属性时,我才想隐藏一些分隔符。否则我会想展示分隔符。
我试图通过使用change()
事件来检查是否具有terminator
属性来实现这一点。
以下是我所做的。
$("input[type='checkbox']").change(function(e) {
var className = 'terminated_' + getContronId($(this).attr('name'));
var existingElements = $('#survey-optional-controls').val().split('|') || [];
//Hide all groups that have the class equal to className
if( $(this).is(':checked') ){
if( $(this).data('terminator') ){
hideControls($(this), existingElements, className);
}
} else {
showControls(existingElements, className);
}
}).change();
函数hideControls
将隐藏所需的输入。功能showControls
将显示所需的输入(如果有)。
我的代码有点工作,但有一个问题我无法找到解决方案。在选中一个具有terminator
属性的框并选中一个不具有terminator
属性的框,然后"取消选中"一个没有terminator
属性的框后,就会出现问题。
当第一次选中具有terminator
属性的框时,分隔符会按预期隐藏。
然后,当取消选中一个没有terminator
属性的框时,它会显示应该隐藏的分隔符,因为我还有一个带有terminator
属性的复选框。
如何解决此问题?
我创建了这个jFiddle来展示代码和实际问题。您可以跳到jFiddle上的"1:b)更多问题"部分,然后选中"红色"框,再选中"绿色-终结者"框,最后取消选中"红色的"框,从而重新创建问题。您将看到下面的分隔符将如何显示在它们应该隐藏的位置,因为"绿色终止符"仍然被选中"
您应该检查复选框的"已检查"状态,并在每次更改时设置数据终止符属性。
类似的东西
$("input[type='checkbox']").change(function(e) {
var className = 'terminated_' + getContronId($(this).attr('name'));
var existingElements = $('#survey-optional-controls').val().split('|') || [];
var isTerminatorChecked = $("input:checkbox[data-terminator='Yes']").is(":checked");
//Hide all groups that have the class equal to className
if (isTerminatorChecked) {
hideControls($(this), existingElements, className);
} else {
showControls(existingElements, className);
}
});
更新的fiddle
为了确保只有当带有data-terminator
属性的复选框未选中时才会调用showControls
,
更改此项:
...
} else {
showControls(existingElements, className);
}
至
...
} else if ($(this).is("[data-terminator]")) {
showControls(existingElements, className);
}
更新的jsFiddle:http://jsfiddle.net/8yf0v3xt/10/
下面的代码说"如果任何类型为checkbox
的输入正在更改"
$("input[type='checkbox']").change(function(e) { /*hide*/ }
else { /*show*/}
当您取消选中"红色"复选框this
="红色"时,红色没有被选中,因此…它会自动转到显示分隔符的else语句
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 显示5秒后隐藏潜水
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 剑道UI内联编辑:如何在点击其他按钮时隐藏按钮
- 浮动页脚栏-使用Bootstrap隐藏
- 在jquery中为显示/隐藏设置cookie
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 从var向代码隐藏函数传递值
- Image赢得't隐藏在滚动jQuery上
- 具有rowGrouping的数据表无法隐藏列
- Jquery隐藏未触发
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- 隐藏隐藏的输入字段;检查元件”;
- 如何防止在取消隐藏/隐藏文本后滚动到顶部
- 如何通过 JavaScript 取消隐藏隐藏的 asp 元素
- Jquery-显示/隐藏隐藏的输入表单字段
- 隐藏/隐藏的最佳方式't基于配置文件加载HTML部件
- 取消隐藏/隐藏类
- 在 JavaScript 中使用重排隐藏元素,它与 CSS 隐藏属性有何不同
- 使用HTML/JavaScript/CSS隐藏隐藏元素