Also mit diesem Bit Code möchte ich ein Overlay anzeigen, .mg-show-info. Die Klick-Funktion von elInfoLink funktioniert genauso wie geplant. Jetzt soll ich auch die Eltern klickbar machen, und da es bereits ein anderes Ereignis gibt, dachte ich, dass ich es so machen würde, wie du es hier siehst. Jetzt wird durch Klicken auf den Eltern die Funktion seines Kindes aufgerufen, und das console.log funktioniert, aber das Overlay wird nicht angezeigt. Warum?Code wird nur teilweise ausgeführt
var elInfoLink = tile.querySelector('.info-link');
if (elInfoLink) {
$(elInfoLink).parent().click(function (e) {
$(elInfoLink).click();
});
$(elInfoLink).click(function (e) {
e.preventDefault();
e.stopPropagation();
var mg = document.querySelector('#mg');
mg.classList.add('mg-show-info');
mg.dataset.memoryOverlayShowId = tile.dataset.id;
console.log("foo");
});
}
Ich denke, es hat etwas mit Ihrem 'e.stopPropagation();' innerhalb des Codeblocks zu tun. Es stoppt die Ereignisausbreitung und erreicht dadurch nicht die Eltern. –
Mögliches Duplikat von [funktioniert e.stopPropagation() in jquery auf dem Anchor-Tag] (http://stackoverflow.com/questions/8952176/does-e-stoppropagation-in-jquery-works-on-anch-tag) –
@SwashataGhosh Er wird 'e.stopPropagation' brauchen. Wenn es entfernt wird, werden Sie in einem Ereigniszyklus von "Eltern -> Kind -> Eltern ..." gehen. – Rajesh