【发布时间】:2017-07-11 11:11:52
【问题描述】:
更新: Working answer.
这是一个关于 jQuery/JS 的相当复杂的问题 - 我找到了一篇解决类似问题的帖子 here,但我没有使用原始 html 或标签,因此代码的结构完全不同。
基本上我有一个需要在页面加载时隐藏的 div 列表,然后我需要在单击触发元素时显示每个 div。问题是我需要在单击不同的触发元素时隐藏所有其他 div。显然display: none; 需要在页面加载时出现,但 jQuery 超出了我目前的知识范围。
示例:
当这个 div 被点击时
<div id="div1trigger">View Div 1 Contents</div>
显示此 div:
<div id="div1">Div 1 Content Here</div>
我有这个使用这个 JS 的工作:
<script>
jQuery("#div1trigger").click(function(){
jQuery("#div1").toggle();
});
</script>
.toggle() 的用法很简单我知道,但这就是复杂的地方,我一共有 5 个触发 div 和 5 个内容 div,每个都需要显示对应的 div并同时隐藏所有其他 div。
我的想法是这样的:
<script>
jQuery("#div1trigger").click(function(){
jQuery("#div1").toggle();
jQuery("#div2, #div3, #div4, #div5").hide();
});
</script>
然后这个 ^ 5 次来控制每个触发 div(尽管我几乎可以肯定有一个更清洁/更“正确”的解决方案来解决这个问题)。
请考虑所有触发 div 都标有“divnumbertrigger”,例如#div2trigger;并且所有内容 div 都标有“divnumber”,例如 #div2。
最后作为视觉参考,这里是前端的屏幕截图,以帮助可视化使用情况,所有内容 div 使用页面的相同区域(绿色框)和所有“查看”按钮(红框内)是 div 触发器:
谁能为我提供一个可行的解决方案/正确的方法来实现这一目标?
【问题讨论】:
-
@MarcinCiesla 对此表示感谢,但如果未选择该选项,则需要隐藏内容,因此该方法将无法正常工作
-
您是否考虑过为您的 details div 设置为
.innerHtml的模板,或者这种方法不可行?我确实删除了我的上一条评论,因为我在您的屏幕上看到此方法不适用于您的情况
标签: javascript jquery