2013-06-09 3 views
0

Я пытаюсь закрыть мой modal box (#newspopup) при нажатии на кнопку (<div class="visitwebsitebtn">Click here to enter</div>)? Я попробовалЗакрыть fancybox, нажав на класс в поле

<script> 
    $(document).on('click', '.visitwebsitebtn', function() { 
    $.fancybox.close(); 
    }); 

    </script> 

но без успеха. Любые мысли по этому поводу? Большое спасибо

Fancy Код:

<script type="text/javascript"> 

function openFancybox() { 
    setTimeout(function() {$('#newspopup').trigger('click'); },2000); 

} 
$(document).ready(function() { 
    var visited = $.cookie('visited'); 
    if (visited == 'yes') { 
     return false; 
    } else { 
     openFancybox(); 
    } 
    $.cookie('visited', 'yes', { expires: 0.0001 }); 
    $('#newspopup').fancybox({ 
    helpers : { 
     overlay : { 
      css : { 
       'background' : 'rgba(58, 42, 45, 0.3)' 
      } 
     } 
    } 
}); 

}); 
</script> 

Скрипт для закрытия:

<script> 
$(document).on('click', '.visitwebsitebtn', function() { 
$.fancybox.close(); 
}); 

</script> 

Box:

<div id="newspopup" style="display:none;"> 
    <h2>Latest news</h2> 
    <p>blablabla</p> 
    <div class="visitwebsitebtn">Click here to enter</div> 
    </div> 
+0

** ОСТОРОЖНО **, что ваш селектор '# newspopup' - это как триггер fancybox, так и сам контент fancybox. – JFK

ответ

1

Try:

$(document).on('click', function(e) { 
    if(e.target === $('.visitwebsitebtn')[0]) { 
     $.fancybox.close(); 
    } 
}); 
+0

Работал как шарм, спасибо большое! – Greg

0

Почему бы вам прикрепить обработчики щелчка, как это?

$(".visitwebsitebtn").click(function() { 
     $.fancybox.close(); 
}); 
+0

Спасибо. К сожалению, это не работает в моем случае (возможно, из-за того, что я использую v2 fancybox?) – Greg

+0

@Greg: это не имеет ничего общего с версией fancybox, которую вы используете, но как обработчик связанный с селектором, который должен находиться в делегированной форме. – JFK

1

Проще всего связать click обработчик внутри FancyBox (afterShow) обратного вызова

$('#newspopup').fancybox({ 
    helpers: { 
     overlay: { 
      css: { 
       'background': 'rgba(58, 42, 45, 0.3)' 
      } 
     } 
    }, 
    afterShow: function() { 
     $(".visitwebsitebtn").on("click", function(){ 
      $.fancybox.close(); 
     }); 
    } 
}); 

... при условии, что кнопка с class="visitwebsitebtn" находится внутри вашего #newspopup контейнер.

Не нужно связывать дополнительные click до $(document).

+0

Спасибо JFK - Цените свою помощь – Greg

Смежные вопросы