Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обработка клика только по контейнеру (https://javascript.ru/forum/misc/52713-obrabotka-klika-tolko-po-kontejjneru.html)

voodoo_dn 02.01.2015 22:21

Обработка клика только по контейнеру
 
Доброе время суток.

Задача состоит в следующем: мне надо обрабатывать клик, только по контейнеру.
Контейнер - обычный div. В нём есть элементы, кнопки, изображения и т.п. Но если обрабатывать нажатие на контейнере, то событие вызывается даже если я нажал на кнопку, а не контейнер. Это нормально, но как обойти?

<div id="container">
<a id="button1">1</a>
<a id="button2">2</a>
<a id="button3">3</a>
</div>


$('#container').click(function(){
alert();
});


В общем, событие должно воспроизводиться всегда, когда есть клик по контейнеру, но кроме попаданий на ссылки или другие элементы.

Safort 02.01.2015 22:35

Очевидно же, сравнить по каким-то параметрам

<script src="http://code.jquery.com/jquery-2.1.3.min.js"></script>
<div id="container">
<br>
<a id="button1">1</a><br>
<a id="button2">2</a><br>
<a id="button3">3</a>
</div>
  <script>
    $("#container").click(function(e) {
      if (e.target.id == 'container') {
        alert('Попался');
      }
    });
  </script>

voodoo_dn 02.01.2015 22:54

Благодарю :)

bes 04.01.2015 12:03

так думаю получше будет
<script src="http://code.jquery.com/jquery-2.1.3.min.js"></script>
<style>
#container {
	border: solid 1px green;
}
#container a {
	background: #666;
}
</style>
<div id="container">
<br>
<a id="button1">1</a><br>
<a id="button2">2</a><br>
<a id="button3">3</a>
</div>
  <script>
    $("#container").click(function(e) {
      if (e.target == this) {
        alert('Попался');
      }
    });
  </script>


Часовой пояс GMT +3, время: 16:52.