Мне нужно свернуть все остальные лотки, когда текущий лоток будет расширен, и предупредить пользователя о имени класса (независимо от того, расширен ли контент2, контент1, контент2 в настоящее время и активен, когда все закрыты, возвращается ноль) расширенного лотка для пользователя. Все они должны быть закрыты при загрузке. Я не понимаю, как это сделать.
я пробовал с
<!DOCTYPE html>
<html>
<head>
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<meta name = "viewport" content = "width=device-width, initial-scale=1">
<style>
.collapsible {
background-color: #777;
color: white;
cursor: pointer;
padding: 18px;
width: 100%;
border: none;
text-align: left;
outline: none;
font-size: 15px;
}
.active, .collapsible:hover {
background-color: #555;
}
.content {
padding: 0 18px;
display: none;
overflow: hidden;
background-color: #f1f1f1;
}
</style>
</head>
<body>
<button type = "button" class = "collapsible">Open Section 1</button>
<div class = "content0">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<button type = "button" class = "collapsible">Open Section 2</button>
<div class = "content1">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<button type = "button" class = "collapsible">Open Section 3</button>
<div class = "content2">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<button onlcick = "alert('active tray is ')">Press me</button>
<script>
var coll = document.getElementsByClassName("collapsible");
var i;
for (i = 0; i < coll.length; i++) {
coll[i].addEventListener("click", function() {
this.classList.toggle("active");
var content = this.nextElementSibling;
if (content.style.display === "block") {
content.style.display = "none";
} else {
content.style.display = "block";
}
});
}
</script>
</body>
</html>
Да, я ищу jquery.
Сделайте это фрагментом на SO.
Сначала спрячьте все div
, используя подстановочный знак. При нажатии на кнопку покажите свой div
с помощью next
, как показано ниже.
$("[class^=content]").hide();
$('.collapsible').click(function(e) {
$("[class^=content]").hide();
$(this).next('div').show();
});
.collapsible {
background-color: #777;
color: white;
cursor: pointer;
padding: 18px;
width: 100%;
border: none;
text-align: left;
outline: none;
font-size: 15px;
}
.active,
.collapsible:hover {
background-color: #555;
}
.content {
padding: 0 18px;
display: none;
overflow: hidden;
background-color: #f1f1f1;
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button type = "button" class = "collapsible">Open Section 1</button>
<div class = "content0">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<button type = "button" class = "collapsible">Open Section 2</button>
<div class = "content1">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<button type = "button" class = "collapsible">Open Section 3</button>
<div class = "content2">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
Но мне нужно предупредить имя класса активного открытого div..<button onclick = "alert('active Tray is ')"></button>
Я имею в виду, когда нажимается другая кнопка ниже. Я обновил код, чтобы иметь кнопку
Вы можете проверить, имеет ли кнопка, которая нажимается, класс active
или нет, в зависимости от этого скрыть или показать div и распечатать результат, т.е.: классы или ноль.
Демонстрационный код:
$("div[class*=content]").toggle()
$(".collapsible").click(function() {
//remove active from other collaps.. button
$(".collapsible").not(this).removeClass("active")
//check if the button which is click have class active
if ($(this).hasClass("active")) {
$(this).removeClass("active") //remove active class
console.info("Null...") //means no one is slected
} else {
$(this).addClass("active") //add class active
$(".collapsible").not(this).next("div").hide() //hide next div from others
console.info("Current Active " + $(this).next("div").attr("class"))
}
$(this).next("div").toggle() //show div or hide
})
.collapsible {
background-color: #777;
color: white;
cursor: pointer;
padding: 18px;
width: 100%;
border: none;
text-align: left;
outline: none;
font-size: 15px;
}
.active,
.collapsible:hover {
background-color: #555;
}
.content {
padding: 0 18px;
display: none;
overflow: hidden;
background-color: #f1f1f1;
}
style>.collapsible {
background-color: #777;
color: white;
cursor: pointer;
padding: 18px;
width: 100%;
border: none;
text-align: left;
outline: none;
font-size: 15px;
}
.active,
.collapsible:hover {
background-color: #555;
}
.content {
padding: 0 18px;
display: none;
overflow: hidden;
background-color: #f1f1f1;
}
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<button type = "button" class = "collapsible">Open Section 1</button>
<div class = "content0">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<button type = "button" class = "collapsible">Open Section 2</button>
<div class = "content1">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<button type = "button" class = "collapsible">Open Section 3</button>
<div class = "content2">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
попробуйте это, я внес небольшие изменения в ваш код
<!DOCTYPE html>
<html>
<head>
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<meta name = "viewport" content = "width=device-width, initial-scale=1">
<style>
.collapsible {
background-color: #777;
color: white;
cursor: pointer;
padding: 18px;
width: 100%;
border: none;
text-align: left;
outline: none;
font-size: 15px;
}
.active, .collapsible:hover {
background-color: #555;
}
.content {
padding: 0 18px;
display: none;
overflow: hidden;
background-color: #f1f1f1;
}
</style>
</head>
<body>
<button type = "button" class = "collapsible" id = "sec1">Open Section 1</button>
<div class = "content" id = "content1">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<button type = "button" class = "collapsible" id = "sec2">Open Section 2</button>
<div class = "content" id = "content2">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<button type = "button" class = "collapsible" id = "sec3">Open Section 3</button>
<div class = "content" id = "content3">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
<script>
var coll = document.getElementsByClassName("collapsible");
var i;
for (i = 0; i < coll.length; i++) {
coll[i].addEventListener("click", function() {
this.classList.toggle("active");
let id=this.id;
let allContents = document.getElementsByClassName("content");
let l = allContents.length;
for (i = 0; i < l; i++) {
if (allContents[i].previousElementSibling.id!==id){
allContents[i].style.display = "none";
}
}
var content = this.nextElementSibling;
alert(""+content.id)
if (content.style.display === "block") {
content.style.display = "none";
} else {
content.style.display = "block";
}
});
}
</script>
</body>
</html>
ваш текущий код в js? вы открыты с jquery?