我有一个页面,它有一个表单和一个生成的内容区域,它们都通过复选框隐藏了部分和子部分。(复选框隐藏在页面上,但不在小提琴上显示复选框的“已选中”状态)
这是小提琴。它可能看起来很多,但坚持下去,它真的不是。我有一个应该很简单的问题,让我告诉你问题出在哪里。
我正在尝试向页面添加功能,以便当用户从左侧窗格中取消选择某个部分的所有子部分时,该部分作为一个整体隐藏在左侧,而右侧表单让您知道整个部分被隐藏(小提琴中的红色文本),但不允许更改小节以保持持久性。我可以通过在左侧窗格中单击它们来隐藏所有子部分,左侧部分消失,右侧子部分隐藏自己,通知您它的右侧标题隐藏在左侧。问题出在单击右侧标题以取消隐藏左侧部分时,子部分不再可见或“重置”。
这是处理检查是否所有小节都隐藏的代码:
if (($('fieldset.abstract > div > input:checkbox:checked').length+1) == 7){
//Left Side
$('.block > .abstract > .superseven > section input').each(function(){
$(this).prop('checked' , true);
});
$('.block > .abstract > .superseven > section').eq(index).hide();
$('.block > .abstract').hide("slow");
//Right Side
$('fieldset.abstract label:first').toggleClass('hidden');
$('fieldset.abstract > div > input').each(function(){
$(this).prop('checked' , false);
});
$('fieldset.abstract > div > label').each(function(){
$(this).hide("slow");
});
仅在隐藏所有小节之后,如何将复选框“重置”为页面加载?应该是,一旦用户单击右侧部分标题以将部分带回左侧,所有子部分都可见。
- 如果我在单击右侧部分标题时应用常规条件(类似于标记为 JS 的下部
//Toggle Section completely
),则从仅隐藏几个子部分然后隐藏整个部分时,它将不会保持持久性。 - 我在想,如果我跟踪状态变量,但不知道 Jquery 中的变量作用域(我认为它必须是全局的,我认为这不是好的做法),这可能是可能的,
或者 Jquery 的整个部分可以包装在一个自调用函数中,如下所示:
(函数名() { ... })();
我可以使用任何其他编程方法吗?
很抱歉,对于 js/jquery 的新手来说,这很深入,我希望小提琴会有所帮助,而不是伤害。
澄清应该发生的事情:
- 单击所有左侧小节,它们就会消失
- 右侧的小节(仅限标签,因为所有复选框在实时页面中都不可见)应该消失
- 右侧部分标题应变为红色
- 单击右侧部分标题
- 左侧部分应该出现(所有这一切都在这里工作,这是它中断的地方)并且左侧的所有子部分都应该可见,就像它被重置一样(与页面加载时相同,但仅适用于此特定部分,因为这些部分有多个),因为用户隐藏了所有子部分,所以整个部分都被隐藏了,现在用户想要左侧部分,并且所有子部分都应该可见。
笔记:
当前工作功能:
- 从标题中隐藏整个部分
- 隐藏除一个小节之外的所有小节
- 隐藏小节,然后选择隐藏整个部分,并在取消隐藏整个部分时保持持久性