Обработка кликов вложенных блоков
Здравствуйте.
Ссылка (кода минимум): 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, время: 11:54. |