2013-05-02 12 views
5

Sto provando a utilizzare JQuery dall'interno di un iframe a .prependTo a .classdiv all'interno del Parent.antefatto Al separatore principale specificato più vicino da un iframe

Questo ha multipli della stessa classe. ** EDIT E iframes

Tutto è nello stesso dominio.

Così, da dentro il documento principale:

<div class="NewPHOTOS"> 
    **<!--PUT ME HERE!-->** 
    <div class="LinePhoto"> 
     <a href="images/518279f07efd5.gif" target="_blank"> 
      <img src="images/thumb_518279f07efd5.gif" width="50" height="50"> 
     </a> 
    </div> 

    <iframe class="uploadLineID_55" width="800px" height="25px" src="../../uploads/uploadiframe.php" scrolling="no" seamless></iframe> 
</div> 

script all'interno del iframe:

$(document).on("click", '#TEST', function() { 

    appendImagetoParent(); 

}); 


function appendImagetoParent() { 

var data = '<div class="LinePhoto"><a href="images/TEST.gif" target="_blank"><img src="images/thumb_TEST.gif" width="50" height="50"></a></div>'; 

$(".NewPHOTOS", window.parent.document).each(function() { $(data).prependTo($(".NewPHOTOS")); 
}); 

/* $(data).prependTo($(".NewPHOTOS", window.parent.document)); This prepends to Every .NewPHOTOS */} 

Sono stato in esecuzione in tondo e googleing per ore ormai. Non riesco a capirlo.

Cosa sto facendo di sbagliato qui?

EDIT L'ho usato, funziona alla grande!

$(parent.document).find('.' + frameElement.className) 
         .closest('.NewPHOTOS') 
         .prepend(data); 
+2

C'è più di un iframe in un div con newphotos di classe nella pagina? – Dale

+1

Potrebbe essere meglio collegare un listener nella pagina padre per l'evento load di ciascun iframe, in questo modo è possibile indirizzare il frame e allenare i suoi genitori ('. NewPHOTOS') – Dale

+0

Sì. Entrambi hanno multipli. – Monty

risposta

3
$(document).on("click", '#TEST', appendImagetoParent); 

function appendImagetoParent() { 

    var div = $('<div />', {'class':'linePhoto'}), 
     a = $('<a />', {href:'images/TEST.gif', target:'_blank'}), 
     img = $('<img />', {src:'images/thumb_TEST.gif', width:'50', height:'50'}); 

    $(parent.document).find('.' + frameElement.className) 
         .closest('.NewPHOTOS') 
         .prepend(div.append(a.append(img))); 
} 

ottenere la classe del contenente iFrame con frameElement.className, e l'uso che di classe per trovare il giusto iFrame nel documento principale, quindi trovare l'elemento più vicino .NewPHOTOS, e anteporre i contenuti, creati in modo più modo jQuery'ish.

+0

Questo ha fatto ... Grazie! – Monty

+0

@Monty - questo è eccellente, dato che non ero sicuro al 100%, e non avevo un vero modo di testarlo! – adeneo

Problemi correlati