Всплывание событий в IE и Opera
Здравствуйте, прошу помочь разобраться с проблемой и заранее благодарю за идеи.
У меня есть такая модель Dom <div class="page"> <div>......</div><div>......</div><div>......</div> </div> <div class="page"> <div>......</div><div>......</div><div>......</div> </div> <div class="page"> <div>......</div><div>......</div><div>......</div> </div> Вложенные дивы имеют position=absolute и пересекаются произвольным образом. Я вешаю обработчик по клику $(".page").click(function(e) { ..... }) и при нажатии на вложенные div-ы во всех браузерах происходит всплытие события до $(".page").click (естественно не только до этого места, но это и не важно сейчас). Это то, что мне нужно Далее так же есть кнопка с событием onclick=SetMove(), по которой все вложенные div переопределяют свои события. function SetMove() { var dt = new Date(); var but = document.getElementsByTagName('input'); var len = but.length; for( var i=0; i<len; i++ ) { id = but[i].id; if( id == 'save' ) but[i].disabled = false; if( id == 'set' ) but[i].style.display = 'none'; if( id == 'clear' ) but[i].style.display = ''; } var mods = document.getElementsByTagName('div'); var len = mods.length; for( var i=0; i<len; i++ ) if( mods[i].parentNode.className == 'page' ) { mods[i].onmousedown = SetModMove; var child = mods[i].getElementsByTagName('a'); for( var j=0; j<child.length; j++ ) { if( child[j].onmousedown ) child[j].style.display = 'none'; } } document.getElementById('spec_form').className = 'form_edit'; document.getElementById('difPrint').style.display = 'none'; } function SetModMove(e) { if( !e ) e = window.event; if( e.preventDefault ) e.preventDefault(); real_x = this.offsetLeft; real_y = this.offsetTop; dx = e.clientX - real_x; dy = e.clientY - real_y; drag_obj = this; this.style.zIndex = 10000; this.parentNode.style.zIndex = 10000; this.parentNode.style.overflow = 'visible'; if( this.className.substr(0,6) != 'moderr' && this.className.substr(0,7) != 'mod_add' ) { this.className = 'mod_moved'; } document.onmouseup = ClearModMove; document.onmousemove = ModMove; if( document.addEventListener ) document.addEventListener("onmousemove",ModMove,false); } function ModMove(e) { if( !e ) e = window.event; if( e.preventDefault ) e.preventDefault(); drag_obj.style.left = e.clientX - dx; drag_obj.style.top = e.clientY - dy; return false; } СУТЬ ПРОБЛЕМЫ: после нажатия на кнопку переопределения событий, не происходит всплытия до первоначального клика по .page. То есть я думаю о том, что где то переопределяется клик по вложенному div-у и не происходит дальнейшего всплытия, а где - не могу понять. Прошу помощи. З.Ы. Так же пробовала комментировать if( e.preventDefault ) e.preventDefault(); чтобы обработчики по умолчанию не предотвращались - но все равно Опера и ИЕ упорно не работают |
Часовой пояс GMT +3, время: 09:24. |