2017-03-10 4 views
-1

Könnten Sie mir bitte sagen, wie Sie Overlay in jQuery schließen? .Aktuell, wenn ich auf die Schaltfläche klicken, zeige ich overlay. Auf overlay gibt es close button.On Klick auf Schließen-Schaltfläche Ich möchte Overlay zu schließen? I wiewie Overlay in jquery zu schließen (Event nicht binden)?

hier zu erreichen ist mein Code

https://plnkr.co/edit/DdujoTZJBDdqSwBybGAM?p=preview

Code: -

$(function(){ 
    $('#btn').click(function(){ 
    $('body').append($('#overlay').html()) 
    }) 
    $('#closeBtn').on('click',function(){ 
    alert('close'); 
    $('.overlay').hide(); 
    }) 
}) 
+0

Es geht [__'Event delegation'__] (https://learn.jquery.com/events/event-delegation/) – Rayon

+0

'$ ('body'). auf ('Klick', '#closeBtn', function() { alert ('close'); $ ('. Overlay'). Hide(); }) ' – Rayon

Antwort

1

Wenn Sie versuchen, die schließen Ereignis zu binden, die Schließen-Schaltfläche ist noch nicht erstellt . So haben Sie die Veranstaltung zu einem übergeordneten Elemente zu binden, um dynamisches Elements der Ereignisse an der Arbeit:

$('body').on('click','#closeBtn',function(){ 
    $('.overlay').hide(); 
}) 

Demo

Oder auch die enge Veranstaltung in dem Show-Event gesetzt:

$('body') 
     .append($('#overlay').html()) 
     .find('#closeBtn') 
      .on('click',function(){ 
       $('.overlay').hide(); 
      }) 

Demo

+0

' Oder sogar das Close-Event beim Show-Event einstellen? Warum ? Erste Lösung ist vernünftiger, denke ich :) – Rayon

+0

@ Rayon nur eine weitere Option. – DontVoteMeDown

+0

Sie fügen Click-Handler jedes Mal hinzu, wenn DOM manipuliert wird. – Rayon