I have folders on my page with class '.folder-ico'. When I click on some folder, the tiny menu inside this folder appears by calling function addTinyMenuInsideIco(). Now If I click any element except clicked folder or clicked folder's elements tiny menu should be removed by using removeTinnyMenuInsideIco(). Unfortunately, $('body').on('click',function(e){}... fires automatically after clicking on folder. Any tips how to do it properly?
<div class="folder-ico">
<div class="folder-image">
<h2>Ico 1</h2>
</div>
<div class="folder-ico">
<div class="folder-image">
<h2>Ico 2</h2>
</div>
<!-- ... -->
<div class="folder-ico">
<div class="folder-image">
<h2>Ico n</h2>
</div>
<script>
$('.folder-ico').on('click', whenClickOnIco);
function whenClickOnIco ()
{
if(!$(this).hasClass('clicked'))
{
// Add class '.clicked'
$(this).addClass('clicked');
// Add tiny menu inside ico.
addTinyMenuInsideIco();
// Remember 'old this'
let tempThis = this;
// Add click event to all body elements.
$('body').on('click',function(e)
{
// Clicked on some body element except class '.clicked'.
if(!$(e.target).hasClass('clicked'))
{
// Remove class '.clicked'.
$(tempThis).removeClass('clicked');
// Remove tiny menu inside ico.
removeTinnyMenuInsideIco();
// Unbind click event.
$('body').unbind('click');
// Add event click to unbinded elements.
$('.folder-ico').on('click', whenClickOnIco);
}
})
}
}
</script>