-_\\ Это называется "пример".
Сообщение от TimohaP
|
я просто хотел узнать можно ли упростить "this.parentNode.parentNode"
|
Я ответил: во многих случая можно, offsetParent справится с этим. А такж заметил, что хоть и можно, но не нужно ибо говнокод и показал как примерно надо. Модальное - не модальное, не суть. Если оно генерируется js-ом то и управляться должно им. Никаких выборок "третьего элемента сбоку после десятого снизу ".
Вот тебе пример с разными z-index:
<style>.modal {
position: absolute;
border: 1px solid #000;
padding: 20px;
background: #eee;
}</style>
<input type="text" value="Text text text text">
<input type="button" value="new" onclick="new Modal(previousElementSibling.value)">
<script>
Modal = (function(win){
function Modal(text){
var modal = document.createElement('div');
modal.innerHTML = text;
modal.className = 'modal';
modal.style.top = '100px';
modal.style.left = '100px';
modal.style.zIndex = ++Modal.zIndex;
modal.mousedown = function(){
modal.style.zIndex = ++Modal.zIndex;
}
modal.onmousedown = function(e){
var style = modal.style;
style.zIndex = ++Modal.zIndex;
Modal.active = modal;
Modal.oldX = parseInt(style.left || 0,10) - e.clientX;
Modal.oldY = parseInt(style.top || 0,10) - e.clientY;
}
modal.onmouseup = function(){
Modal.active = false;
}
var close = document.createElement('button');
close.innerHTML = 'X';
close.onclick = function(){
modal.parentNode.removeChild(modal)
}
modal.appendChild(close);
document.body.appendChild(modal);
}
win.addEventListener('mousemove',function(e){
if(Modal.active){
Modal.active.style.left = Modal.oldX + e.clientX + 'px';
Modal.active.style.top = Modal.oldY + e.clientY + 'px';
}
}, false)
Modal.zIndex = 1;
return Modal
}(window));
</script></body>