2017-03-31 5 views
0

Ich habe ein Problem mit Jquery .On() -Funktion und Lenker Vorlage. Ich wroted Vorlage Lenker und fügen Sie ihn dynamisch in dem Dokument:Jquery Klick-Ereignis nicht mit Handlebars Vorlage

$('.services-wrapper').append(serviceTemplate({index : ++maxIndex})); 

Diese Vorlage eine Schaltfläche hat:

<p> 
    <?= Html::buttonInput('Delete', [ 
    'class' => 'btn btn-danger delete-service', 
    'id' => 'js-delete-service', 
     'data' => [ 
     'index' => $index, 
    ], 
    ]) ?> 
</p> 

So wroted I-Handler auf diese Schaltfläche klicken:

$('.service').on('click', '.delete-service', function (e) { 
    alert('Clicked'); 
    //$(this).parent().parent().remove(); 
}); 

Als ich hinzufügen Diese Vorlage zu dokumentieren, klicken Sie auf Ereignis nicht ausgelöst. Was ist das Problem?

Antwort

1

Sie können einen nächsten übergeordneten Wrapper benötigen wie:

$('.service-wrapper').on(...); 
+0

Nein, funktioniert nicht. – illatif

+0

_doesn't work_ .... erklärt das Problem nicht, können Sie mehr ausarbeiten. Was ist das aktuelle Problem? Siehst du einen Fehler in der Konsole? – Jai

+0

Nur nichts. Kein Fehler, keine Aktion, wenn ich auf die dynamisch hinzugefügte Schaltfläche klicke. Aber Knopf, was gerendert in Server (nicht dynamisch) Aktion (Alarm) gut. – illatif

0

Sie versuchen, den Event-Handler auf ein Element zu befestigen, die nicht in Ihrem DOM-Struktur nicht vorhanden ist. Bevor Sie on('click') hinzufügen, versuchen Sie, das Protokoll $('.service') zu trösten. Sie müssen Ereignis Delegation verwenden: https://learn.jquery.com/events/event-delegation/ Also in Ihrem Fall:

$(".service-wrapper").on("click", ".delete-service", function(event) { 
    event.preventDefault(); 
    alert('Clicked'); 
}); 
+0

Ich versuchte $ (Dokument) - funktioniert nicht. Und Element ist in DOM vorhanden. – illatif

+0

Versuchen Sie, verschiedene HTML-Ereignisse wie "mousedown" oder "mouseover" zu verwenden, vielleicht stoppt etwas Ereignis sprudeln – Oskar

+0

Nein, 'mouseover' funktioniert auch nicht :(Ich weiß nicht, warum dieses Delegate-Ereignis nicht funktioniert. – illatif

0
$("body").on('click','.delete-service',function(){ 
    alert('Clicked'); 
}); 

Versuchen Sie, diese

+0

Tryed (und Dokument, andere Elternelemente), nein ( – illatif

Verwandte Themen