Como anexar um “ponteiro” para elemento DOM para uma mesa de luz em vez de copiá-lo?

StackOverflow https://stackoverflow.com/questions/1647129

  •  22-07-2019
  •  | 
  •  

Pergunta

Eu tenho um formulário de entrada complexo dentro de um aplicativo baseado na web PHP. Estruturá-la um pouco, eu introduzi "Multifacetado favoritos" para deixar partes do formulário - em linha com o nome DIVs com "display" definido como "none" - aparecem dentro de uma caixa de diálogo estilo "lightbox". Ele funciona muito bem, até agora eu percebi que quando ele exibe uma DIV, ele cópias -lo em sua DIV centrado, tirando-o da forma - e todas as alterações de formulários de entrada contido lá são perdidas.

O código em questão no código mf_lightbox que faz uma DIV em linha em um diálogo lightbox centrado é:

showBoxByID : function(id, boxWidth, boxHeight) {
this.lightboxType = 'id';
this.lightboxCurrentContentID = id;
this.setLightboxDimensions(boxWidth, boxHeight);
var element = $(id);
var contents = $('mf_boxContents');
contents.appendChild(element);  // <!-- This is where it happens
Element.show(id);
this.showBox();
return false;
},

alguém sabe uma maneira não cópia , mas de alguma forma "anexar" a div para a camada boxContents, assim que permanece na forma dom-sábio? Como um ponteiro em uma linguagem de programação? Este mf_lightbox é rápido, grande e eu gostaria muito de ficar com ele.

Estou sendo bastante claro? Você começa o que eu quero dizer? Você sabe alternativas Luz que fazem isso de forma diferente?

Agradecemos antecipadamente por suas respostas!

Foi útil?

Solução

A solução foi muito mais fácil do que se pensava. Eu só precisava para armazenar o pai do elemento a ser inserido no lightbox:

// Save parent?
this.contentParent = element_to_be_inserted.parentNode; 

e no fechamento, mover o elemento de volta para o pai:

// Move elements back to original location
if (this.contentParent != null)
 this.contentParent.appendChild($(this.lightboxCurrentContentID));
else
 body.appendChild($(this.lightboxCurrentContentID));

Isso deve funcionar da mesma forma para qualquer favoritos lá fora. Apenas appendChild () o elemento de volta ao seu pai quando você está feito.

Uma desvantagem, claro, é que você não pode lidar com a forma envolvente usando "this.form", enquanto os seus elementos estão na lightbox.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top