2012-01-18 11 views
5

Fondamentalmente voglio avvolgere del contenuto sulla mia pagina in un div.Avvolgere il contenuto in un Div con javascript senza aggiornamento iframe

Posso farlo usando la funzione wrap in jQuery ma il mio problema è che ho alcuni iframe nel mio contenuto che contengono pubblicità e quando si avvolge il contenuto si aggiornano gli iframe.

Da quello che posso dire questo è perché dietro le quinte è la clonazione del contenuto da spostata nella nuova div.

html

<div class="content"> 
    <iframe src="http://something.com/ads"></iframe> 
</div> 

js

$(content).wrap('awesome_container');

Idealmente vorrei solo fessura in alcuni tag div aperti prima del div contenuti e pochi intimi tag div successiva, ma non posso sembra aggiungere qualsiasi div alla pagina senza aggiungere tag vicini.

Qualcuno sa di un modo per aggirare questo problema?

Acclamazioni

+0

Eventuali duplicati, anche se non c'è risposta accettata: http://stackoverflow.com/questions/4397270/jquery-wrap-without-refresh Inoltre, questo è un bug segnalato Sembra essere un problema con Firefox: http://bugs.jquery.com/ticket/7020 – JSuar

risposta

2

Invece di rimuovere il codice html o fare una copia di esso, vedere se è possibile ottenere il risultato desiderato con distacco di jQuery() Ciò consentirà anche tutto ciò che gli eventi si è associato a questo elemento ed i suoi figli ancora funzione in seguito. Può essere sufficiente per conservare l'oggetto iFrame invece di uccidere fuori.

var orphan = $(selector).detach() 
someParent.html(orphan); 

fatemi sapere se questo aiuta :)

+0

Questo è davvero strano, sembra funzionare perfettamente circa l'80% delle volte e poi ottengo un po ' di comportamento strano l'altro 20% ma potrebbe essere giù per l'impostazione della mia pagina. Grazie – Marklar

0

ritengo wrap utilizza internamente html metodo per impostare il codice nel passato in contenitore per cui iframe viene aggiornata. Se usi il metodo append, non aggiornerà lo iframe perché sposta semplicemente l'elemento da una posizione all'altra. Prova a creare il tuo contianer impressionante e poi aggiungere i content div all'interno di questo contenitore.

$('.content').before("<div id='awesome_container' />"); 

$('#awesome_container').append($('.content')); 
+0

stesso problema con la funzione append – Marklar

Problemi correlati