首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >点击显示隐藏的Div

问点击显示隐藏的Div
EN

Stack Overflow用户
提问于 2014-04-23 19:41:32
回答 2查看 168关注 0票数 0

当我点击相应的div时,我想显示一个div,就像在Google的图像搜索结果中单击图像时一样。图像行被分割,一个新的区域被显示出来。我以我对javascript的最少知识获得了很大的进展:http://codepen.io/anon/pen/fKEgw

它的基本原理如下:

代码语言:javascript
复制
document.getElementById("a-section").addEventListener("click", function () {
document.getElementById("a-reveal").style.height = "300px";
document.getElementById("b-reveal").style.height = "0px";
document.getElementById("c-reveal").style.height = "0px";
document.getElementById("d-reveal").style.height = "0px";
document.getElementById("e-reveal").style.height = "0px";
document.getElementById("f-reveal").style.height = "0px";
document.getElementById("g-reveal").style.height = "0px";
document.getElementById("h-reveal").style.height = "0px";
});

我怎样才能得到类似的效果而不被迫设置一个高度值呢?有没有更好的方法来编码这种类型的东西,这样我就不会为移动视图做重复的div了?SHould我使用的不仅仅是javascript?

非常感谢您的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-23 19:51:54

如果使用jquery,您可以简单地这样做,例如

代码语言:javascript
复制
$("#a-reveal").show();

和

代码语言:javascript
复制
$("#b-reveal").hide();

而不是改变高度。在普通的javascript中,这基本上是将'display‘css属性设置为'none’以隐藏它,然后再返回(默认为'block')。

编辑:

另外,如果您修改html,使div如下所示:

代码语言:javascript
复制
<div id="a-section" class="section" reveal="a-reveal">
....

<div id="a-reveal" class="reveal">

在event包含关联replace的ID的情况下,可以用以下方式替换所有单独的事件处理程序附加代码:

代码语言:javascript
复制
//attaches event to every div with class "section"
$(".section").click(function(){
    $(".reveal").hide();
    var thisRevealID = $(this).attr("reveal");
    $("#"+thisRevealID).show();
});

可能有一种获得适当显示div的更简洁的方法,而不是使用添加reveal属性,但其思想是使您能够根据单击的div确定您需要什么,而代码不知道具体单击了哪个div。

票数 2
EN

Stack Overflow用户

发布于 2014-04-23 19:55:05

我同意,如果该项目是大型的,您可能会更好地使用JQuery,见这个时尚的优秀答案。如果您想继续使用普通的Javascript,当然可以稍微清理一下:

代码语言:javascript
复制
var reveal_func = function(section){
   var arr_a = new array("a-reveal","b-reveal","c-reveal");
   for (var i=0; i<var_a.length; i++){
      if (arr_a[i] === section){
          document.getElementById(arr_a[i]).style.height = "300px";
      }else{
         document.getElementById(arr_a[i]).style.height = "0px";
      }
   }

};

然后

代码语言:javascript
复制
document.getElementById("a-section").addEventListener("click", reveal_func("a-reveal"))
document.getElementById("b-section").addEventListener("click", reveal_func("b-reveal"))

如有需要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23253754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档