Здравствуйте, прошу помочь разобраться с проблемой и заранее благодарю за идеи.
У меня есть такая модель 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(); чтобы обработчики по умолчанию не предотвращались - но все равно Опера и ИЕ упорно не работают