2015-04-15 2 views
1

J'ai cette boîte d'ombre et ce que j'essaie de faire est de le faire disparaître lorsque je clique sur la superposition, mais maintenant, il ne fonctionne que si je clique sur l'image elle-même. J'ai tout essayé je peux dans le code, mais toujours pas de dés, le code est le suivant:superposition de la zone d'ombre cliquez fadeaway

$(document).ready(function(){ 

    $('a.shadowbox').click(function(e) { 
    $('body').css('overflow-y', 'hidden'); 
    $('<div id="overlay"></div>') 
     .css('top', $(document).scrollTop()) 
     .css('opacity', '0') 
     .animate({'opacity': '0.9'}, 'slow') 
    .appendTo('body'); 

    $('<div id="shadowbox"></div>') 
     .hide() 
    .appendTo('body'); 

    $('<img>') 
     .attr('src', $(this).attr('href')) 
     .load(function() { 
      var top = ($(window).height() - $('#shadowbox').height())/2; 
      var left = ($(window).width() - $('#shadowbox').width())/2; 
      $('#shadowbox') 
      .css({ 
       'top': top + $(document).scrollTop(), 
       'left': left 
       }) 
      .fadeIn(); 
    }) 
    .click(function() { 
     $('#overlay, #shadowbox') 
      .fadeOut('slow', function(){ 
       $(this).remove(); 
      $('body').css('overflow-y', 'auto'); 
      }); 
     }) 
    .appendTo('#shadowbox'); 
    return false; 
    }); 
}); 
+1

Ce genre de question a vraiment besoin d'un mockup (jsFiddle ou snippet SO). –

+0

Parce que vous avez démontré que les gestionnaires d'événements * peuvent * être ajoutés à un élément déconnecté +1 :) –

Répondre

1

L'événement click est actuellement une partie de la chaîne pour $('img') (c.-à-attr, charge, cliquez, appendTo) .

plutôt essayer d'ajouter l'événement click à la superposition:

$('#overlay').click(...) 
+0

@Ted right vous êtes sur l'ID de l'élément - si j'avais seulement lu correctement la question ... :) –