565 Stimmen

Klick-Ereignis funktioniert nicht bei dynamisch erzeugten Elementen

<html>
<head>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">

        $(document).ready(function() {

            $("button").click(function() {
                $("h2").html("<p class='test'>click me</p>")
            });   

            $(".test").click(function(){
                alert();
            });
        });

    </script>
</head>
<body>
    <h2></h2>
    <button>generate new element</button>
</body>
</html>

Ich habe versucht, ein neues Tag mit dem Klassennamen test dans le <h2> indem Sie auf die Schaltfläche klicken. Ich habe auch ein Klick-Ereignis definiert, das mit test . Aber das Ereignis funktioniert nicht.

Kann jemand helfen?

3voto

user2257720 Punkte 31

Die Jquery .on funktioniert gut, aber ich hatte einige Probleme mit dem Rendering Umsetzung einige der Lösungen oben. Mein Problem bei der Verwendung des .on ist, dass die Ereignisse irgendwie anders wiedergegeben wurden als in der .hover método.

Nur zur Info für alle anderen, die das Problem auch haben könnten. Ich löste mein Problem, indem ich das Hover-Ereignis für das dynamisch hinzugefügte Element erneut registrierte:

das Hover-Ereignis neu registrieren, da Hover nicht für dynamisch erstellte Elemente funktioniert. so jedes Mal, wenn ich das neue/dynamische Element erstellen ich den Hover-Code wieder hinzufügen. funktioniert perfekt

$('#someID div:last').hover(
    function() {
       //...
    },
    function() {
       //...
    }
);

3voto

Ankit Tanna Punkte 1705

.live-Funktion funktioniert hervorragend.

Es ist für dynamisch hinzugefügte Elemente auf der Bühne.

$('#selectAllAssetTypes').live('click', function(event){
                    alert("BUTTON CLICKED");
                    $('.assetTypeCheckBox').attr('checked', true);
                });

Zum Wohl, Ankit.

3voto

Daryn K. Punkte 641

Sie können auch Folgendes verwenden onclick="do_something(this)" Innenelement

2voto

Daryl H Punkte 606

Sie können dynamisch erstellten Elementen einen Klick hinzufügen. Beispiel unten. Mit einem Wenn, um sicherzustellen, dass es getan. In meinem Beispiel greife ich ein div mit der Klasse erweitern, Hinzufügen einer "klicken, um mehr zu sehen" span, dann mit, dass span zu verstecken/anzeigen das ursprüngliche div.

$.when($(".expand").before("<span class='clickActivate'>Click to see more</span>")).then(function(){
    $(".clickActivate").click(function(){
        $(this).next().toggle();
    })
});

0voto

Abhijit Punkte 222

Verwenden Sie "on", da der Klick an die bereits vorhandenen Elemente gebunden wird.

z.B.

$('test').on('click',function(){
    alert('Test');
})

Das wird helfen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X