Ich habe einen Container <div>
, der divs dynamisch angehängt hat. Die divs sind click
Handles durch das body
Element, wie folgt: $(body).on("click",".divClass",function);
(Ich tat es so, so dass die Bindungen auf die dynamisch hinzugefügten Elemente können alle an einer Stelle im Code erfolgen, und Tonnen von Bindungen zu verhindern). Ich muss ein auf das Container-Div setzen, so dass das Klick-Handle auf seinem Eltern nicht ausgelöst wird. Das Problem ist, wenn ich in die stopPropagation
auf dem Container div, stoppt es das Kind div Auslösung (da es tatsächlich der Körper ist, der die Bindung hat, nicht die Kind div)
Hier ist eine Geige, die meine zeigt Problem:
$("#A").click(function() {
console.log('This event should not fire when clicking innermost')
});
$("#B").click(function(e) {
e.stopPropagation();
});
$("body").on("click", "#C", function() {
console.log('This event should fire when clicking innermost')
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="A">
outermost
<div id="B">
middle
<div id="C">
innermost
</div>
</div>
</div>
[A bizarr ähnliche Frage] (http://stackoverflow.com/questions/41598293/event-propagation-issue/41598470) – lonesomeday
@lonesomeday woah ..... Ich schwöre, Ich habe ihr Schnipsel nicht angeschaut, aber das ist meinem Schnipsel unheimlich ähnlich. Die Bindungen sind jedoch in den Elterndivs in meiner Frage etwas anders. –
Ihr Ereignishandler für #C wird geschehen, nachdem B und A aufgetreten sind. Sie können nichts tun, ohne die Ereignisdelegierung zu verwenden oder die Weitergabe nicht zu stoppen. –