2013-07-13 4 views
1

I имеют следующую структуру Div: -Javascript не делать функцию

<div id="a" onclick="function1();"> 
<div id="b"> 
</div> 

<div id="c"> 
</div> 
</div> 

Конечно, нажав «а» вызовет function1(), так как «б» и «в» расположены внутри «а» , при нажатии на «b» или «c» также запускается функция1().

На самом деле, я не хочу, чтобы функция1() срабатывала при нажатии «b». Я попытался использовать z-index, чтобы сделать «b» очень выше «a», но это не помогает.

Я ищу способ, который похож на: -

<div id="b" onclick="function1() return false"></div> 
+1

Проверьте ['event.target'] (https://developer.mozilla.org/en-US/docs/Web/API/event.target)? –

+1

вы можете использовать event.stopPropagation() для функции b и c click для предотвращения вызова функции function1(). –

+0

@Mohit Pandey: Это было мое решение. –

ответ

0

Вы должны смотреть на цель мероприятия.

С вашим HTML:

<div class="a"> 
    <div class="b">Hello</div> 
    <div class="c">World</div> 
</div> 

Вы можете использовать JavaScript (JQuery):

$('.a').on('click', function(event){ 
    var $target = $(event.target); 
    if($target.is('.a')){ 
    alert('You actually clicked .a'); 
    } else { 
    alert('You did not click .a'); 
    } 
}); 

Вот краткий демо с JQuery.

http://jsbin.com/ijinuz/1/edit

0


Вы могли бы сделать это путем передачи event в функции, заданной в onclick и проверки, если event.target.id !== "b":

<!DOCTYPE html> 
<html> 
    <head> 
     <title>asdf</title> 
    </head> 
    <body> 
     <div id = "a" onclick = "doSomething(event);"> 
      div "a" 
      <div id = "b"> 
       div "b" 
      </div> 
      <div id = "c"> 
       div "c" 
      </div> 
     </div> 


     <script type = "text/javascript"> 
      function doSomething(e) { 
          if (e.target.id !== "b") { 
           alert(e.target.id); 
          } 
      } 
     </script> 
    </body> 
</html> 


Вот jsfiddle.

1

Просто:

$('#a').children().on('click', function(event) { 
    event.stopPropagation(); 
}); 

Здесь у вас есть демо Fiddle.

+1

+1 Это очень полезно! –