Ich erstelle eine zusätzliche Registerkarte in einem Menü dynamisch (nennen wir diese neue Registerkarte, Watch), und alles lief ziemlich gut einschließlich des Untermenüs, das angezeigt wurde, sobald der neue Tab über schwebte. Ich schaute mir Artikel über Event-Sprudeln an und warf einen Blick auf andere Beispiele, fand aber keine Lösung für mein Problem.JavaScript-Untermenü nicht beibehalten
Immer wenn ich über Watch wache, erscheint das Untermenü, aber wenn ich versuche, von Watch zu seinem Untermenü zu schweben, verschwindet das Untermenü. Ich brauche das Untermenü, um fortzufahren, wenn ein Benutzer über Watch oder das Untermenü schwebt, und das Untermenü sollte nur verschwinden, sobald der Benutzer sich von beiden bewegt. Nur zu erwähnen, kann ich CSS für meine Lösung nicht verwenden. Ich habe meinen aktuellen Code unten angehängt mit Kommentaren:
//PREPEND AS FIRST CHILD
var prependChild = function(parent, newFirstChild) {
parent.insertBefore(newFirstChild, parent.firstChild)
}
//DECLARING VARS
var navMenu = document.getElementsByClassName('navGlobal-list')[0];
categoryExplorer = document.getElementsByClassName('categoryExplorer')[0];
//CREATING NEW TAB
var exploreTab = document.createElement('li');
exploreTab.className = 'navGlobal-category';
//CREATING NEW SEARCH FORM
var searchHtml = ['<div class="searchProgram searchProgram--categoryExplorer">',
'<div class="searchProgram-container">',
'<input type="search" class="form-control form-control--light form-control--searchProgram" placeholder="Search programs" value="">',
'</div>',
'</div>'].join('');
//CREATING NEW WATCH CATEGORY EXPLORER CONTENT
var watchCategoryExplorerContent = document.createElement('div');
watchCategoryExplorerContent.className = 'categoryExplorer-content target-watch-content';
watchCategoryExplorerContent.innerHTML = searchHtml;
prependChild(categoryExplorer, watchCategoryExplorerContent)
var watchLink = document.createElement('a');
watchLink.setAttribute('href','/watch');
watchLink.innerHTML = 'watch'.toUpperCase();
exploreTab.appendChild(watchLink);
navMenu.appendChild(exploreTab); //ADDED 'WATCH' TO THE NAVIGATION
//CHANGE CLASSES ON HOVER
exploreTab.addEventListener("mouseover", function() {
exploreTab.className = 'navGlobal-category navGlobal-category--open';
categoryExplorer.className = 'categoryExplorer categoryExplorer--open';
watchCategoryExplorerContent.className = 'categoryExplorer-content categoryExplorer-content--open target-watch-content';
}, false);
exploreTab.addEventListener("mouseleave", function() {
exploreTab.className = 'navGlobal-category';
categoryExplorer.className = 'categoryExplorer';
watchCategoryExplorerContent.className = 'categoryExplorer-content target-watch-content';
}, false);
Es scheint, dass die Anzeige ändert sich nicht das Untermenü zeigt, und dass der einzige Weg, das Menü zeigt, wenn die Klassen, categoryExplorer - offen, navGlobal-Kategorie - offen und categoryExplorer-Inhalt - offen vorhanden sind - ist gibt es einen Weg um dies, das Display nicht einstellen würde? –
Das ist seltsam für sich. Gibt es da ein "Wichtiges"? Ich verstehe nicht wirklich, wie Sie Ihre Klassen verwenden. Sie sind für mich nicht intuitiv und ohne die Definition zu sehen, verstehe ich sie nicht. – Halcyon
Es ist in Ordnung, ich habe das Menü als einen Ansatz ersetzt und arbeite an einem anderen Ansatz ohne den Mauszeiger. Das Layout wird gebaut aus Reagieren und das Untermenü nur zeigte basierend darauf, ob Klassen bestanden oder nicht auf einem separaten Bauteil. –