Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обработка нажатия на элемент и его родитель (https://javascript.ru/forum/misc/33876-obrabotka-nazhatiya-na-ehlement-i-ego-roditel.html)

klev2004 12.12.2012 14:03

Обработка нажатия на элемент и его родитель
 
Простая проблема вроде бы, но вот решить не получается.

Есть <div>, в котором есть <a>. У каждого из них есть свой id. Есть скрипт, который по разному реагирует на клик по div'у и по a.

Проблема: после клика на <a> происходит обработка его, а заетм еще и обработка клика по <div>.

Наглядная иллюстрация: http://jsfiddle.net/tLGd7/

Помогите исключить обработку нажатия на div, если было осуществлено нажатие на a.

lord2kim 12.12.2012 14:32

klev2004,
<style>
#id1{
    background-color: yellow;
    width: 100%;
    height: 30px;
}
</style>
<div id="id1">
    <a href="#" id="id2">link</a>
</div>
<script>
window.onload = function () {
    document.getElementById("id1").onclick = function (e) {
         e = e || event;
         target = e.target || e.srcElement;
         if (target.tagName == "A") { alert("линк"); }
         else { if (target.id == "id1") { alert("div"); } }
    }
}
</script>

klev2004 12.12.2012 15:24

lord2kim, спасибо!

Hoshinokoe 12.12.2012 20:07

klev2004,

В данной ситуации лучше использовать stopPropogation (отменяет всплытие события наверх).
<div id="id1">
    <a href="#" id="id2">link</a>
</div>
$('#id1').click(function(){
    alert('id1');                
});

$('#id2').click(function(event){
    alert('id2');
    event.stopPropogation();
});


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