I am trying to come up with a way so that once #email-popup or #phone-popup is visible, if the user clicks anywhere EXCEPT the visible popup, then it is going to hide the popup.
My method for hiding the popups in the code below does not work well...
My JQuery so far
$(".email").click(function(){
$("#email-popup").show("fast");
});
$(".phone").click(function(){
$("#phone-popup").show();
});
$(document).click(function() {
$("#email-popup").hide("fast");
$("#phone-popup").hide("fast");
});
You're close - just stop the propagation when the user clicks within the popups:
$("#email-popup, #phone-popup").on("click", function(e){
e.stopPropagation();
});
$(".email").on("click", function(e){
e.stopPropagation();
$("#email-popup").show("fast");
});
$(".phone").on("click", function(e){
e.stopPropagation();
$("#phone-popup").show();
});
Also you have some repeated code in the document click. You're hiding the email popup twice.
$(document).on("click", function() {
$("#email-popup, #phone-popup").hide("fast");
});
You could check the ID of the element clicked (won't work on children of the elements) :
$(".email").click(function(e){
e.stopPropagation();
$("#email-popup").show("fast");
});
$(".phone").click(function(e){
e.stopPropagation();
$("#phone-popup").show("fast");
});
$(document).click(function(e) {
if (!(e.target.id === 'email-popup' || e.target.id === 'phone-popup')) {
$("#email-popup, #phone-popup").hide("fast");
}
});
DEMONSTRATION
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With