2015-04-15 3 views
1

У меня есть это теневое окно, и то, что я пытаюсь сделать, это заставить его исчезать, когда я нажимаю на оверлей, но сейчас это работает, только если я нажимаю на фактическое изображение. Я пробовал все, что я могу в коде, но до сих пор не кости, код выглядит следующим образом:shadow box overlay click 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

Такого рода вопрос действительно нуждается в макете (JSFiddle или SO фрагмент коды). –

+0

Поскольку вы продемонстрировали, что обработчики событий * могут * быть добавлены к отключенному элементу +1 :) –

ответ

1

click событие в настоящее время является частью цепочки для $('img') (т.е. атр, нагрузки, нажмите, appendTo) ,

Вместо попробуйте добавить событие щелчка к накладке:

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

@ Правильно вы указали идентификатор элемента - если бы я только правильно прочитал вопрос ... :) –