На работоспособность не проверял, но логика такая... Чтоб проверить по клику на сайт, что таргетом не является ваша кнопка и модалка
<style>
.modal {
display: none
}
.modal.__show{
display: block
}
</style>
<button type="button" class="btn">toggle Modal</button>
<div class="modal" >Modal text</div>
$('.btn').on('click', function(){
$('.modal').toggleClass('__show');
})
$('body').on('click', function(e){
if(e.target !== $('.modal') && e.target !== $('.btn') && $('.modal').hasClass('__show') ){
$('.modal').removeClass('__show');
}
})