Как настроить расположение тегов абсолютного div - PullRequest
0 голосов
/ 18 мая 2018

Здесь я пытаюсь отобразить div#content_1 , div#content_2 and div#content_3 при нажатии на соответствующий элемент. Я хотел бы показать последний нажатый элемент сверху. Здесь, если вы щелкнете элемент3 один раз, вы не сможете просматривать элемент1 и элемент2 вечно, и еслиВы нажимаете на item2, как только вы не можете видеть item1 навсегда. Пожалуйста, помогите мне исправить это, заранее спасибо. (Учтите, что у нас нет большого количества предметов)

function getElement(e) {
   var elem = document.getElementById(e);
   return elem;
}

getElement("item_1").addEventListener("click",function(){
    getElement("content_1").style.display = "block";});
    
getElement("item_2").addEventListener("click",function(){
    getElement("content_2").style.display = "block";});
    
getElement("item_3").addEventListener("click",function(){
    getElement("content_3").style.display = "block";});
ul,li{
  padding:0px;
  margin:0px;
  list-style:none;
 }
 div#menu{
  width:100%;
  height:50px;
 }
 div#menu>ul li{
  float:left;
  border:1px solid #000;
  padding: 2px;
  background-color:blue;
  color:#fff;
  margin:5px;
  cursor:pointer;
 }
  
 #content{
  width:100%;
  border:1px solid #000;
  height:200px;
  position :relative;
 }
 
 .abs{
  position:absolute;
  width:100px;
  height:100px;
  border:1px solid #000;
  display:none;
 }
 
 #content_1{
  background-color:red;
 }
 #content_2{
  background-color:green;
 }
 #content_3{
  background-color:yellow;
 }
<div id=menu>
  <ul>
    <li id="item_1">menu item1</li>
    <li id="item_2">menu item2</li>
    <li id="item_3">menu item3</li>
  </ul>
</div>
<div id="content">
  <div id="content_1" class="abs"></div>
  <div id="content_2" class="abs"></div>
  <div id="content_3" class="abs"></div>
</div>

Ответы [ 4 ]

0 голосов
/ 18 мая 2018

Это только версия JQ.Вы можете выбрать abs в зависимости от идентификатора элемента li

let item = $("ul li"),
  content = $(".abs")

item.on("click", function() {
  let itemId = $(this).attr("id"),
    idNr = itemId.split('_').pop();
    
  content.removeClass("show")
  $("#content_" + idNr).addClass("show")

})
ul,
li {
  padding: 0px;
  margin: 0px;
  list-style: none;
}

div#menu {
  width: 100%;
  height: 50px;
}

div#menu>ul li {
  float: left;
  border: 1px solid #000;
  padding: 2px;
  background-color: blue;
  color: #fff;
  margin: 5px;
  cursor: pointer;
}

#content {
  width: 100%;
  border: 1px solid #000;
  height: 200px;
  position: relative;
}

.abs {
  position: absolute;
  width: 100px;
  height: 100px;
  border: 1px solid #000;
  display: none;
}

#content_1 {
  background-color: red;
}

#content_2 {
  background-color: green;
}

#content_3 {
  background-color: yellow;
}

.abs.show {
  display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id=menu>
  <ul>
    <li id="item_1">menu item1</li>
    <li id="item_2">menu item2</li>
    <li id="item_3">menu item3</li>
  </ul>
</div>
<div id="content">
  <div id="content_1" class="abs"></div>
  <div id="content_2" class="abs"></div>
  <div id="content_3" class="abs"></div>
</div>
0 голосов
/ 18 мая 2018

Надеюсь, это поможет вам.если вы не хотите скрывать div, просто поиграйте с z-index.

function getElement(e) {
   var elem = document.getElementById(e);
   return elem;
}

function zIndexZero() {
document.querySelectorAll('.abs').forEach(function(item) {
  item.style.zIndex = 0;
});
}

getElement("item_1").addEventListener("click",function(){

    zIndexZero();
    getElement("content_1").style.display = "block";
    getElement("content_1").style.zIndex = 99;
    });
    
getElement("item_2").addEventListener("click",function(){
    zIndexZero();
    getElement("content_2").style.display = "block";
    getElement("content_2").style.zIndex = 99;
    
    });
    
getElement("item_3").addEventListener("click",function(){
    zIndexZero();
    getElement("content_3").style.display = "block";
    getElement("content_3").style.zIndex = 99;
    });
ul,li{
  padding:0px;
  margin:0px;
  list-style:none;
 }
 div#menu{
  width:100%;
  height:50px;
 }
 div#menu>ul li{
  float:left;
  border:1px solid #000;
  padding: 2px;
  background-color:blue;
  color:#fff;
  margin:5px;
  cursor:pointer;
 }
  
 #content{
  width:100%;
  border:1px solid #000;
  height:200px;
  position :relative;
 }
 
 .abs{
  position:absolute;
  width:100px;
  height:100px;
  border:1px solid #000;
  display:none;
 }
 
 #content_1{
  background-color:red;
 }
 #content_2{
  background-color:green;
 }
 #content_3{
  background-color:yellow;
 }
<div id=menu>
  <ul>
    <li id="item_1">menu item1</li>
    <li id="item_2">menu item2</li>
    <li id="item_3">menu item3</li>
  </ul>
</div>
<div id="content">
  <div id="content_1" class="abs"></div>
  <div id="content_2" class="abs"></div>
  <div id="content_3" class="abs"></div>
</div>
0 голосов
/ 18 мая 2018

Вот что вы хотите

function getElement(e) {
   var elem = document.getElementById(e);
   return elem;
}

$("[id^=item_]").on('click', function () {
        $("[id^=content_]").css("display", "block");
        var id = $(this).prop('id');
        var dataArray = id.split('_');
        var numToCLick = parseInt(dataArray[1]);

        for(var i = 1; i < numToCLick; i++){
          getElement("content_"+i).style.display = "none";
        }
});
ul,li{
  padding:0px;
  margin:0px;
  list-style:none;
 }
 div#menu{
  width:100%;
  height:50px;
 }
 div#menu>ul li{
  float:left;
  border:1px solid #000;
  padding: 2px;
  background-color:blue;
  color:#fff;
  margin:5px;
  cursor:pointer;
 }
  
 #content{
  width:100%;
  border:1px solid #000;
  height:200px;
  position :relative;
 }
 
 .abs{
  //position:absolute;
  width:100px;
  height:100px;
  border:1px solid #000;
  float:left;
  display: none;
  
 }
 
 #content_1{
  background-color:red;
 }
 #content_2{
  background-color:green;
 }
 #content_3{
  background-color:yellow;
 }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<div id=menu>
  <ul>
    <li id="item_1">menu item1</li>
    <li id="item_2">menu item2</li>
    <li id="item_3">menu item3</li>
  </ul>
</div>
<div id="content">
  <div id="content_1" class="abs"></div>
  <div id="content_2" class="abs"></div>
  <div id="content_3" class="abs"></div>
</div>

Надеюсь, что это решит вашу проблему

0 голосов
/ 18 мая 2018

Просто возьмите другие элементы и скройте их в своем коде js:

function getElement(e) {
   var elem = document.getElementById(e);
   return elem;
}

getElement("item_1").addEventListener("click",function(){
    getElement("content_1").style.display = "block";
    getElement("content_2").style.display = "none";
    getElement("content_3").style.display = "none";    
    });
    
getElement("item_2").addEventListener("click",function(){
    getElement("content_1").style.display = "none";
    getElement("content_2").style.display = "block";
    getElement("content_3").style.display = "none";   
    });
    
getElement("item_3").addEventListener("click",function(){
    getElement("content_1").style.display = "none";
    getElement("content_2").style.display = "none";
    getElement("content_3").style.display = "block";   
    });
ul,li{
  padding:0px;
  margin:0px;
  list-style:none;
 }
 div#menu{
  width:100%;
  height:50px;
 }
 div#menu>ul li{
  float:left;
  border:1px solid #000;
  padding: 2px;
  background-color:blue;
  color:#fff;
  margin:5px;
  cursor:pointer;
 }
  
 #content{
  width:100%;
  border:1px solid #000;
  height:200px;
  position :relative;
 }
 
 .abs{
  position:absolute;
  width:100px;
  height:100px;
  border:1px solid #000;
  display:none;
 }
 
 #content_1{
  background-color:red;
 }
 #content_2{
  background-color:green;
 }
 #content_3{
  background-color:yellow;
 }
<div id=menu>
  <ul>
    <li id="item_1">menu item1</li>
    <li id="item_2">menu item2</li>
    <li id="item_3">menu item3</li>
  </ul>
</div>
<div id="content">
  <div id="content_1" class="abs"></div>
  <div id="content_2" class="abs"></div>
  <div id="content_3" class="abs"></div>
</div>

Надеюсь, это то, что вы ищете.

...