您好我想弄清楚如何在复选框困境中做一些逻辑。
我有一个带有与之关联的标签的视频列表。
它有一个相应的复选框。
选中该复选框后,将使用jquery显示列表(display:none)。
现在,由于每个视频都有多个标签。相反的功能将被证明是不合需要的,因为如果未选中该框,则会删除其相关视频,包括碰巧已被其他chekced标签框显示的视频。因此,一旦显示div,它就会立即再次隐藏。你跟着?
我正在设想像
这样的东西if(tag1 AND tag2 AND tag3 AND tag4未选中)然后(隐藏视频div)
我能以任何方式实现这一目标吗?
这是上半场,其余的可能取决于你!!
$("#squaredThree<? echo $a_number ?>").change(function() {
var amount = 0;
$("#squaredThree<? echo $a_number ?>:checked").each(function(){
console.log('this has been determined to be ":checked"');
var theonestoshow = document.getElementsByClassName('<? echo $total_tags[$a_number] ?>');
$(theonestoshow).show( "drop", 300);
});
});
另外,您可以考虑使用样式界面,这样您就可以了解我甚至在谈论的内容:
答案 0 :(得分:0)
我发现您的解释有点令人困惑,但我实现您的要求的方式是更改任何复选框测试,是否检查了组中的任何内容,如果是,则显示视频,如果不隐藏它。
您目前在$("#squaredThree<? echo $a_number ?>:checked")
上使用.each()循环 - 这是否意味着您有多个具有相同ID的元素?这不是有效的HTML,并且不能很好地与你的JS一起工作。最好将所有相关的复选框都放在一个公共类中,因为这样您就可以轻松地将它们作为一个组来处理。假设您将其更改为class="checks"
:
var $cbs = $(".checks").change(function() {
if ($cbs.is(":checked")){
$('.<? echo $total_tags[$a_number] ?>').show( "drop", 300);
} else {
$('.<? echo $total_tags[$a_number] ?>').hide( "drop", 300);
}
});
如果检查了jQuery对象中的任何元素, .is(":checked")
将返回true,如果没有选中,则返回false。
(当然如果您不想更改以介绍课程,您仍然可以使用您选择的选择器使用相同的想法。)