Проблема: Остановка всплытия событий (Firefox)
Помогите пожалуйста с кодом, в мозиле (3.5.16) не происходит остановка всплытия события, в остальных браузерах все нормально
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Untitled Document</title> </head> <body onclick="alert('body')"> <div onclick="dc()" style="width:100px; height:100px; background:#CC6600;"></div> <script> function dc() { alert('div'); stop_bubbling(event); } function stop_bubbling(e) { e = e || window.event if (e.stopPropagation) e.stopPropagation(); else e.cancelBubble = true; } </script> </body> </html> |
Кто такой event в dc() ? Правильно window.event .
В фф его нет и не будет, у "остальных" его тоже быть не должно, но совместимость с ие, будь она неладна. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Untitled Document</title> </head> <body onclick="alert('body')"> <!--Зато event кроссбраузерно есть во встраиваемых обработчиках--> <div onclick="dc(*!*event*/!*)" style="width:100px; height:100px; background:#CC6600;"></div> <script> function dc(e) { alert('div'); stop_bubbling(e); } function stop_bubbling(e) { if (e.stopPropagation) e.stopPropagation(); else e.cancelBubble = true; } </script> </body> </html> |
а как назначить обработчик из скрипта?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <script src="http://code.jquery.com/jquery-latest.js"></script> </head> <body> <div style="width:100px; height:100px; background:#CC6600;"></div> <script> $("body").click(function() {alert("body");}); $("div").bind("click", function() { alert(this); stop_bubbling(this); }); function stop_bubbling(element) { element.onclick = function(event) { event = event || window.event if (event.stopPropagation) event.stopPropagation(); else event.cancelBubble = true; } } </script> </body> </html> не работает |
С чего бы ему работать то, блин.
$("div").bind("click", function(e) { alert(this); stop_bubbling(e); }); function stop_bubbling(event) { event = event || window.event if (event.stopPropagation) event.stopPropagation(); else event.cancelBubble = true; } Хотя в этом вашем унылом жкуери ни зуб ногой. |
спасибо, работает, буду разбираться
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <script src="http://code.jquery.com/jquery-latest.js"></script> </head> <body> <div style="width:100px; height:100px; background:#CC6600;"></div> <script> $("body").click(function() {alert("body");}); $("div").bind("click", function(e) { alert(this); stop_bubbling(e); }); function stop_bubbling(e) { if (e.stopPropagation) e.stopPropagation(); else e.cancelBubble = true; } </script> </body> </html> |
Часовой пояс GMT +3, время: 05:59. |