2016-09-23 1 views
1

У меня есть div внутри div. Если внутренний div был нажат (closeme div), я не хочу запускать событие другого события div (контейнер div). Как я могу это сделать ?jQuery - div внутри div, как запустить только событие 1 клик, когда внутри нажата

HTML

<div id="container"> 
content 
<div id="closeme"></div> 
</div> 

JS

$(document).on('click', '[id="container"]' ,function(){ 
alert("I am clicked"); 
} 

$(document).on('click', '[id="closeme"]' ,function(){ 
alert("I am clicked"); 
} 
+2

https://api.jquery.com/event.stoppropagation/ - пользователь 'event.stoppropagation' –

ответ

2

$(document).on('click', '[id="container"]', function(e) { 
 
    e.stopPropagation(); 
 
    alert("I am container"); 
 
}) 
 

 
$(document).on('click', '[id="closeme"]', function(e) { 
 
    e.stopPropagation(); 
 
    alert("I am closeme"); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="container"> 
 
    content 
 
    <div id="closeme">qwe</div> 
 
</div>

Используйте event.stopPropagation()

Описание: Предотвращает событие от пузырьков дерева DOM, предотвращая уведомление родительских обработчиков о событии.

+0

Спасибо. Должен ли я использовать функцию closeme перед функцией контейнера? Потому что, если контейнер сначала получает событие click (даже если пользователь нажимает на closeme), он останавливается и никогда не запускает функцию closeme? –

+0

Я сомневаюсь, что порядок влияет на – guradio

1

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

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Document</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
</head> 
<body> 
    <div id="container"> 
    content 
    <div id="closeme">Inner Div</div> 
    </div> 
</body> 
    <script> 
    $(document).on('click', '[id="container"]', function(event) { 
     alert("container clicked"); 
    }); 

    $(document).on('click', '[id="closeme"]', function(event) { 
     event.stopPropagation(); 
     alert("coloseme clicked"); 
    }); 
    </script> 
</html> 
2

делать, если проверить, если цель #closeme

$(document).on('click', '[id="closeme"]', function(event) { 
    if ($(event.target).is('[id="closeme"]')) { 
     alert("coloseme clicked"); 
    } 
    }); 
Смежные вопросы