Ich lernte etwas über Sprudeln und Capturen, und obwohl diese Situation nicht für beide Fälle gilt, wollte ich wissen, ob es einen Weg gibt, dies mit der Ereignisbehandlung in JS zu tun. Das Problem:Auslösen von Ereignissen auf der gleichen Ebene von DOM mit ausgelöstem Ereignis
Hier mache ich ein paar Kästchen und einen Trigger auf der gleichen Ebene des DOM. Ich stelle jedem einen Ereignis-Listener für ein benutzerdefiniertes Ereignis (Lawine) zur Verfügung, das beim Klicken auf das untere Feld ausgelöst werden kann. Ich möchte, dass der Auslöser an die anderen Elemente gesendet wird, die ihre Hintergrundfarbe ändern. Siehe Code unten.
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="./styles.css">
<script src="./actions.js"></script>
</head>
<body>
<div class="one block"></div>
<div class="two block"></div>
<div class="three block"></div>
<div class="four trigger"> Fire When Ready </div>
</body>
</html>
CSS
.block, .trigger{
height: 200px;
width: 200px;
}
.one{
background-color: red;
}
.two{
background-color: yellow;
}
.three{
background-color: green;
}
.four{
background-color: orange;
text-align: center;
vertical-align: middle;
line-height: 200px;
}
JS
document.addEventListener("DOMContentLoaded", function(event){
console.log("content loaded");
var blocks = document.getElementsByClassName("block");
for(var i = 0; i<blocks.length; i++){
(function(){
var target = blocks[i];
target.addEventListener("avalanche", function(){
this.style.backgroundColor = "brown";
}, true);
})()
}
var beacon = document.getElementsByClassName("four")[0];
beacon.addEventListener("click", function(){
console.log("fired!");
// trigger the event and watch the cascade
beacon.dispatchEvent(cascade);
});
// create a custom event
var cascade = new CustomEvent('avalanche', {});
console.log("handlers set");
});
So wäre die Idee, das untere Feld klicken und die Ereignis Start haben und mit dem anderen zu sehen Divs im Körper. Diese divs würden alle ausgelöst werden, um die Hintergrundfarbe der Boxen zu ändern. Kann das gemacht werden? Es gibt offensichtlich andere Möglichkeiten, dies mit JS zu tun, aber ich wollte es tun, indem ich auf das Lawinenereignis lauschte.