Jquery 检查是否有多个复选框id';s匹配多跨文本
我使用一组带有标签的复选框来控制在ul中可以看到哪些li,并尝试针对每个li的span类来选择它们。但是,它不是迭代每个复选框,而是在第一个选中的元素上应用代码 我的代码:(假设这些输入周围有一个表单标签)Jquery 检查是否有多个复选框id';s匹配多跨文本,jquery,html,checkbox,label,Jquery,Html,Checkbox,Label,我使用一组带有标签的复选框来控制在ul中可以看到哪些li,并尝试针对每个li的span类来选择它们。但是,它不是迭代每个复选框,而是在第一个选中的元素上应用代码 我的代码:(假设这些输入周围有一个表单标签) 一, 二, 三, 四, $('form')。提交(函数(){ event.preventDefault(); $('.list未设置样式')。每个(函数(){ $(this).find('li').each(function(){ if($('input[type=“checkbox”
- 一,
- 二,
- 三,
- 四,
$('form')。提交(函数(){
event.preventDefault();
$('.list未设置样式')。每个(函数(){
$(this).find('li').each(function(){
if($('input[type=“checkbox”]:checked').attr('id')!=$(this.find('.platform').text()){
$(此).hide(200);
}
});
});
});
这是一个例子。我想要的是,如果我选择了多个复选框,那么在点击submit之后,只会显示具有相同跨度文本的复选框 它只对第一个
输入
元素起作用的原因是因为您只比较了第一个输入
元素的id
:
$('input[type="checkbox"]:checked').attr('id') // This will only select the first one
您应该根据当前.platform
元素文本的id
属性选择复选框
因此,情况可能是:
!$('input[type="checkbox"][id="' + $(this).find('.platform').text() + '"]:checked').length
或更短:
!$('[id="' + $('.platform', this).text() + '"]:checkbox:checked').length
第一部分是选择与当前.platform
元素文本具有相同id
属性的元素。:复选框:checked
选项会将选择限制为仅选中复选框,最后,.length
用于检查是否存在任何匹配项,代码>否定结果
您也可以将代码段缩短一点:
这工作做得很好!虽然我不明白为什么。你能解释一下代码在做什么吗?(即$('input[type=“checkbox”][id=“'+$(this).find('.platform').text()+''']:checked')之前的“!”,并在末尾添加“.length()”。@user3183717我添加了一点解释:)
!$('[id="' + $('.platform', this).text() + '"]:checkbox:checked').length
$('form').submit(function(){
event.preventDefault();
$('.list-unstyled').each(function(){
$(this).find('li').each(function(){
if (!$('input[type="checkbox"][id="' + $(this).find('.platform').text() + '"]:checked').length){
$(this).hide(200);
} else {
$(this).show(200);
}
});
});
});
$('form').submit(function () {
event.preventDefault();
$('.list-unstyled li').each(function () {
$(this).toggle(!$('[id="' + $('.platform', this).text() + '"]:checkbox:checked').length);
});
});