![](/img/trans.png)
[英]Add class if another element has active class and delete this if not with javascript / JQuery
[英]Adding a class to body if another element has a class 'active'
我有一個名為.burger
的按鈕,它被賦予了一個額外的 class ,稱為active
的,在點擊時切換。
HTML
<div class="burger"></div>
JS
var element = document.querySelector('.burger');
element.onclick = function() {
element.classList.toggle('visible');
}
這工作得很好,但我想做的是添加一個事件監聽器,只要.burger
有 class active
,它就會給body
標簽一個 class 的.disable-scroll
。
我將如何使用香草 javascript 實現這一目標? 我正在學習,所以如果我的術語不太正確,我深表歉意。
不需要另一個event
來監聽此button
內部的變化,您只需在同一事件中切換主體 class
var element = document.querySelector('.burger');
var bodyEl = document.querySelector('body');
element.onclick = function() {
element.classList.toggle('visible');
if (element.classList.contains("active"))
bodyEl.classList.add('.disable-scroll');
else bodyEl.classList.remove('.disable-scroll');
}
或者您可以將其簡化為像這樣提到的@3limin4t0r
var element = document.querySelector('.burger'); var bodyEl = document.querySelector('body'); element.onclick = function() { const isAdded = element.classList.toggle("visible"); bodyEl.classList.toggle("disable-scroll", isAdded); }
.visible { background-color: green; }
<button class="burger">Burger Button</button>
好吧,您可以使用MutationObserver
來偵聽 DOM 更新並在特定主體具有正在添加的特定 class 時觸發回調,但我不建議您以這種方式使用 go...
這將使您的代碼更清晰,以找到您將.active
添加到.burger
的位置,然后將.disable-scroll
添加到body
嘗試這個:
element.classList.contains('active')? document.querySelector('body').classList.add('disable-scroll'): document.querySelector('body').classList.remove('disable-scroll')
這將檢查元素是否具有.active
class 然后添加或刪除.disable-scroll
你可以像這樣使用MutationObserver
:
var element = document.querySelector('.burger'); element.onclick = function () { element.classList.toggle('visible'); } const observer = new MutationObserver(({ target, attributeName }) => document.body.classList.toggle('disable-scroll', attributeName === 'class' && target.classList.contains('visible'))); observer.observe(element, { attributes: true });
.visible { background-color: green; }
<div class="active burger">Burger</div>
我的建議(使用箭頭 function和三元運算符):
var el = document.querySelector(".burger"), bodyEl = document.querySelector("body"); el.onclick = () => { el.classList.toggle("visible"), el.classList.contains("active")? bodyEl.classList.add(".disable-scroll"): bodyEl.classList.remove(".disable-scroll") };
.visible { background-color: orange; }
<button class="burger">Burger Button</button>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.