2015-04-14 2 views
-2

У меня есть два div, Outer Div и Inner Div, как div с приложением click. всякий раз, когда я нажимаю внутренний DIV это предупредит внешний DIV также, я хочу, чтобы предотвратить обработчик событий Внешней DIV, когда я нажимаю Внутреннюю Div в JavascriptПредотвращение событий в Javascript

Вот мой Javascript

function funOne() 
{ 
    //event.stopPropagation(); 
    alert('Outer Div') 
} 

function funTwo() 
{ 
    //event.stopPropagation(); 
    alert('Inner Div') 
} 

Вот DEMO

+3

Где события? – JJJ

+1

event.stopPropagation() это не работает для вас? –

+1

Проверьте здесь. http://jsfiddle.net/7r4hhzo0/2/ – ketan

ответ

1

Обновленный ваш скрипку проверить это:

<div class="second" onclick="funTwo(event)"></div> 

function funTwo(event) 
{ 
event.stopPropagation(); 
alert('Inner Div') 
} 

https://jsfiddle.net/7r4hhzo0/4/

+0

NIce One спасибо ya –

+0

Всегда приветствую @Deekey – Kushal

2

Использование stopPropagation должно работать, чтобы прекратить распространение из дочернего div в родительский div, но в функциях отсутствует объект события.

function funOne(e) 
{ 
    e.stopPropagation(); 
    alert('Outer Div') 
} 

function funTwo(e) 
{ 
    e.stopPropagation(); 
    alert('Inner Div') 
} 

Вы также должны передать событие при вызове функции:

<div class="first" onclick="funOne(event)"> 
    <div class="second" onclick="funTwo(event)"></div> 
</div> 

Обратите внимание, что stopPropagation работает только для ребенка/родительских ситуаций. Если один div просто появляется, чтобы быть внутри другого div, stopPropagation ничего не делает.

+1

'e' будет' undefined'. – dfsq

+0

@dfsq Почему вы так думаете? – Xufox

+0

@Xufox OP предоставил демо-версию, это очень легко проверить. – dfsq

1

Проверьте, что вы пропустили определенное событие.

function funOne(e) 
 
{ 
 
    e.stopPropagation(); 
 
    alert('Outer Div') 
 
} 
 

 
function funTwo(e) 
 
{ 
 
    e.stopPropagation(); 
 
    alert('Inner Div') 
 
}
.first{width:600px; height:600px; background:yellow} 
 
.second{width:100px; height:100px; background:orange; position:relative; top:50%; left:50%; margin-left:-50px; margin-top:-50px}
<div class="first" onclick="funOne(event)"> 
 
\t <div class="second" onclick="funTwo(event)"></div> 
 
</div>

Проверить Fiddle.

0
<script> 
    function funOne(e) 
    { 
    e.stopPropagation(); 
    alert('Outer Div') 
    } 

    function funTwo(e) 
    { 
     e.stopPropagation(); 
    alert('Inner Div') 
    } 
    </script> 

Вам нужно вызвать эти функции, например onclick = "funOne (event);" и onclick = "funTwo (событие);"

Смежные вопросы