Показать сообщение отдельно
  #9 (permalink)  
Старый 28.08.2014, 17:40
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,583

-_\\ Это называется "пример".
Сообщение от 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>
__________________
29375, 35

Последний раз редактировалось Aetae, 28.08.2014 в 17:50.
Ответить с цитированием