Обработка кликов вложенных блоков
Здравствуйте.
Ссылка (кода минимум): http://sergcloud.ru/colors.php Задача такая: Клик по желтому вложенному блоку должен менять цвет нижнего блока (желтый или красный по очередности). А клик по красному блоку должен менять цвет нижнего блока только на красный. Проблема в том, что клик по желтому блоку генерирует клик и по красному, так как он в него вложен. Подскажите, пожалуйста, как можно решить данную задачу? |
event.stopPropagation()
|
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
window.onload = function() {
var one = document.getElementById("one"), two = document.getElementById("two");
two.onclick = function(e) {
e = e || window.event;
if(two.style.backgroundColor == "red") two.style.backgroundColor = "yellow";
else two.style.backgroundColor = "red";
};
one.onclick = function(e) {
e = e || window.event;
if(e.eventPhase === 3) return; // если событие вызвалось от всплытия из дочернего элемента то выйти из обработчика
two.style.backgroundColor = "red";
};
};
</script>
<style type="text/css">
#one {
width: 200px;
height: 200px;
}
#two {
width: 100px;
height: 50px;
}
</style>
</head>
<body>
<div id="one" style="background: red;">
one
<div id="two" style="background: yellow;">
two
</div>
</div>
</body>
</html>
|
BaVa,
у тега html есть параметр run [HTML run][/HTML] |
danik.js,
да, с этой функцией по-проще)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
window.onload = function() {
var one = document.getElementById("one"), two = document.getElementById("two");
two.onclick = function(e) {
e = e || window.event;
if(e.stopPropagation) e.stopPropagation();
else e.cancelBubble = true; // для IE < 9
if(two.style.backgroundColor == "red") two.style.backgroundColor = "yellow";
else two.style.backgroundColor = "red";
};
one.onclick = function() {
two.style.backgroundColor = "red";
};
};
</script>
<style type="text/css">
#one {
width: 200px;
height: 200px;
}
#two {
width: 100px;
height: 50px;
}
</style>
</head>
<body>
<div id="one" style="background: red;">
one
<div id="two" style="background: yellow;">
two
</div>
</div>
</body>
</html>
рони, изменил |
Цитата:
|
| Часовой пояс GMT +3, время: 21:42. |