2016-04-14 3 views
0

Я занимался пузырями событий, и я создал для себя типичные 3 divs друг для друга, и я смог заставить код работать и событие прекращать «пузыриться» там, где я хотел.Checked Clicked Element in Bubbling

Мой код был неуклюжим, поэтому я попытался сделать его более упрощенным. Имея все мои <divs>, указывается на одну функцию, у которой была заявка, в которой говорилось, что если было нажато<div>, запустите эту функцию, а затем прекратите распространение, но я верю, что способ «проверки» щелчка неверен.

Ссылка: https://jsfiddle.net/theodore_steiner/t5r5kov0/3/

var d1 = document.getElementById("d1"); 
 
var d2 = document.getElementById("d2"); 
 
var d3 = document.getElementById("d3"); 
 

 
function showme(event) { 
 
    if (d3.onclick == true) { 
 
    alert("hello") 
 
    event.stopPropagation(); 
 
    } else { 
 
    alert("hello"); 
 
    } 
 
}; 
 

 
d1.addEventListener("click", showme); 
 
d2.addEventListener("click", showme); 
 
d3.addEventListener("click", showme);
#d1 { 
 
    height: 300px; 
 
    width: 300px; 
 
    border: 1px solid black; 
 
} 
 
#d2 { 
 
    height: 200px; 
 
    width: 200px; 
 
    border: 1px solid black; 
 
} 
 
#d3 { 
 
    height: 100px; 
 
    width: 100px; 
 
    border: 1px solid black; 
 
}
<div id="d1"> 
 
    <div id="d2"> 
 
    <div id="d3"> 
 
    </div> 
 
    </div> 
 
</div>

+1

Как насчет 'e.target'? – Rayon

ответ

2

event.target.id Использование в качестве event.target возвратит element, на котором event является invoked и id является собственностью DOMElement

Event.target, Ссылка на объект, отправивший событие.

var d1 = document.getElementById("d1"); 
 
var d2 = document.getElementById("d2"); 
 
var d3 = document.getElementById("d3"); 
 

 
function showme(event) { 
 
    if (event.target.id == 'd3') { 
 
    alert("hello") 
 
    event.stopPropagation(); 
 
    } else { 
 
    alert("hello"); 
 
    } 
 
}; 
 

 
d1.addEventListener("click", showme); 
 
d2.addEventListener("click", showme); 
 
d3.addEventListener("click", showme);
#d1 { 
 
    height: 300px; 
 
    width: 300px; 
 
    border: 1px solid black; 
 
} 
 
#d2 { 
 
    height: 200px; 
 
    width: 200px; 
 
    border: 1px solid black; 
 
} 
 
#d3 { 
 
    height: 100px; 
 
    width: 100px; 
 
    border: 1px solid black; 
 
}
<div id="d1"> 
 
    <div id="d2"> 
 
    <div id="d3"> 
 
    </div> 
 
    </div> 
 
</div>

+0

Большое спасибо ... Просто из любопытства, оригинальный способ, которым я написал инструкцию if ((d3.onclick == true)), он вообще что-то проверял? –

+0

Прежде всего, используйте 'console.log (выражение)' для отладки .. Проверьте 'console.log (d3.onclick)' и посмотрите значение в 'Developers tools' – Rayon