Der Selektor wird bei Ausführung ausgeführt, was bedeutet, dass .b
bereits nach dem Laden der Seite gesucht wurde, anstatt nach dem Hinzufügen des Doms.
Um zu zeigen, wie Wähler in Zeile ausführen, funktioniert der Code, wenn Sie es direkt nach dem Anhängen des Elements definieren:
$(".a").click(function() {
$('div').html('<span class="b">test 2</span>');
$(".b").click(function() {
alert("Hello");
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="a">test 1</span><div></div>
jedoch, der richtige Weg, dies zu tun wäre, Definieren eines übergeordneten Selektors Im Folgenden wird ein Klickereignis auf das übergeordnete Element gesetzt, das den target
für den .b
Selektor filtert.
$(".a").click(function() {
$('div').html('<span class="b">test 2</span>');
});
$(document.body).on("click", ".b", function() {
alert("Hello");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="a">test 1</span><div></div>
Mögliche Duplikat [Click-Ereignis auf nicht funktioniert dynamisch generierten Elemente] (http://stackoverflow.com/questions/6658752/click-event-doesnt-work-on-dynamically-generated-elements) –