[英]Select a div using another class
I have a html code which has two div parents inside it with class "main" and "chat". 我有一个html代码,其中有两个div父级,分别是“ main”和“ chat”类。 There is another div in first parent with class="menu" 第一父级中还有另一个带有class =“ menu”的div
When user clicks on menu, it will add "open" class to the div. 当用户单击菜单时,它将在div中添加“ open”类。 Now i want to hide "chat" when menu is open. 现在我想在菜单打开时隐藏“聊天”。
And i know this if i want to select a class, it must be inside of that div. 我知道如果我想选择一个类,它必须在该div内。 Is there any solution (with css or js) to select another div which is outside of that class? 是否有解决方案(使用CSS或JS)来选择该类之外的另一个div?
And i don't have access to html code of "chat" section because it's loading from a third-party website. 而且我无法访问“聊天”部分的html代码,因为它是从第三方网站加载的。
Here is my HTML code: 这是我的HTML代码:
<body>
<div class="main">
<div class="menu">
by click it will add "open" to the "menu" class
</div>
</div>
<div class="chat">
</div>
</body>
and this is what i want to do (but i know that doesn't work in this way): 这就是我想要做的(但我知道这种方式不起作用):
.menu.open .chat {display:none;}
Thanks. 谢谢。
$(".menu").on("click", function() { $(".menu").addClass("open"); $(".chat").hide(); });
.open { background: pink }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <body> <div class="main"> <div class="menu"> by click it will add "open" to the "menu" class </div> </div> <div class="chat"> Chat Div </div> </body>
Try this code sample: 尝试以下代码示例:
JS: JS:
function Open(){
document.getElementsByClassName("menu")[0].classList.add("open");
document.getElementsByClassName("chat")[0].style.display = "none";
}
HTML: HTML:
<body>
<div class="main">
<div class="menu" onclick="Open()">
by click it will add "open" to the "menu" class
</div>
</div>
<div class="chat"></div>
</body>
You can use toggle()
and toggleClass()
in click event 您可以在点击事件中使用toggle()
和toggleClass()
$(".menu").on("click", function() { $(".menu").toggleClass("open"); $(".chat").toggle() });
.open{ color:blue; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <body> <div class="main"> <div class="menu"> by click it will add "open" to the "menu" class </div> </div> <div class="chat"> Chat Div </div> </body>
You can achieve this if you add a class to main
as well (or only main
, and not menu
). 如果同时向main
(或仅向main
,而不向menu
)添加一个类,则可以实现此目的。 Suppose you decide to add class menu-opened
to main
. 假设您决定将menu-opened
类添加到main
。 Now you should be able to achieve desired results using the css code: 现在,您应该能够使用CSS代码获得所需的结果:
.main.menu-opened~.chat {display:none;}
The ~
is used to select every .chat
element proceeded by .main.menu-opened
element. ~
用于选择以.main.menu-opened
元素.main.menu-opened
每个.chat
元素。
Here is the solution: 解决方法如下:
Vanilla JS: ( https://codepen.io/cssjs/pen/EMMPjV ) 香草JS: ( https://codepen.io/cssjs/pen/EMMPjV )
var btnMenu = document.querySelector('.menu')
var boxChat = document.querySelector('.chat')
btnMenu.onclick = handleMenu
function handleMenu(e) {
e.preventDefault()
e.stopPropagation()
if (!btnMenu.classList.contains('open')) {
btnMenu.classList.add('open')
boxChat.classList.add('open')
} else {
btnMenu.classList.remove('open')
boxChat.classList.remove('open')
}
}
jQuery: ( https://codepen.io/cssjs/pen/eXXZEG ) jQuery的 (( https://codepen.io/cssjs/pen/eXXZEG )
var btnMenu = $('.menu')
var boxChat = $('.chat')
$(btnMenu).on('click', function() {
$(btnMenu).toggleClass('open')
$(boxChat).toggleClass('open')
})
HTML: HTML:
<body>
<div class='main'>
<a href="#menu" title="Menu" class='menu'>Menu</a>
</div>
<div class='chat'>
<div>Some chat content.</div>
</div>
</body>
CSS: CSS:
.chat {
display: none
}
.menu.open {
color: red;
font-weight: bold;
}
.chat.open {
display: block
}
Hope it helps. 希望能帮助到你。 :) :)
Here is the Working code as you want..But I have added "open" class on main in-spite of menu. 这是您想要的工作代码。.但是我在菜单的主菜单中添加了“ open”类。
jQuery(document).ready(function($) { $('.menu').on('click', function(){ $('.main').toggleClass('open'); }) });
.main.open + .chat{ display: none; }
<div class="main"> <div class="menu"> by click it will add "open" to the "menu" class </div> </div> <div class="chat"> chat data </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.