Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   "Умный" обработчик события (https://javascript.ru/forum/events/32431-umnyjj-obrabotchik-sobytiya.html)

Кирюха =) 16.10.2012 11:20

"Умный" обработчик события
 
Всем привет!!! Допустим есть
<div class="glav">
  <p>какой то текст<p>
  <p>какой то текст<p>
  <p>какой то текст<p>
  <input type="checkbox" />

</div>

И обработчики события.
$('.glav').click(function(){
  //какое то действие
});

$('.glav input').click(function(){
  //другое действие
});

Вопрос : как сделать так, что бы при нажатии на input не активировался обр события .glav???

dmitriymar 16.10.2012 11:31

запретить всплытие события

Кирюха =) 16.10.2012 11:44

А можно легонький примерчик из под пальцев мастера?:)

Skipp 16.10.2012 11:57

В событии проверяйте target, если это input, то отменяйте.

cyber 16.10.2012 15:38

<!DOCTYPE HTML>
<html>
  <head> 
  <style>
    #block {
      width:100%;
        height:600px;
      border:1px solid black;
    
    }
    
    </style>
  </head>
  <body>
    <div id="block">
    <input type="text">
     <input type="text">
       <input type="text">
       <input type="text">
      
    
    </div>
    <script>

 var elem = document.body.children[0];

      elem.onclick = function (e) {
      
        if(e.target != this) return;
      
    alert("ok");
      }

    </script>

  </body>
</html>

melky 16.10.2012 16:05

cyber, лучше e.stopPropagation(); - так будет яснее.

cyber 16.10.2012 16:07

melky, тогда прийдется еще вешать обработчик и на input

melky 16.10.2012 16:20

Цитата:

Сообщение от cyber
melky, тогда прийдется еще вешать обработчик и на input

ой, перепутал. поправил пред. пост.

dmitriymar 16.10.2012 16:24

Цитата:

Сообщение от cyber
melky, тогда прийдется еще вешать обработчик и на input

так он у него и висит
Цитата:

Сообщение от Кирюха =)
1 $('.glav').click(function(){
2 //какое то действие
3 });
4
5 $('.glav input').click(function(){
6 //другое действие
7 });


cyber 16.10.2012 16:25

dmitriymar, не увидел=)


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