jqueryeventsonclick

How to have click event ONLY fire on parent DIV, not children?


I have a DIV with a classed foobar, and a few DIVs inside that DIV that are unclassed, but I suppose they are inheriting the foobar class:

$('.foobar').on('click', function() { /*...do stuff...*/ });

I want that to fire off only when clicking somewhere in the DIV but not on its children DIVs.


Solution

  • If the e.target is the same element as this, you've not clicked on a descendant.

    $('.foobar').on('click', function(e) {
      if (e.target !== this)
        return;
      
      alert( 'clicked the foobar' );
    });
    .foobar {
      padding: 20px; background: yellow;
    }
    span {
      background: blue; color: white; padding: 8px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <div class='foobar'> .foobar (alert) 
      <span>child (no alert)</span>
    </div>