2009-09-04 8 views
8

Voici mon code HTML:Permutation contenu div avec jQuery

<div class="large"> 
    <img src="/images/photos/Interior.jpg" alt="The interior" style="[...]" /> 
    <div class="caption">The interior</div> 
</div> 
<div class="small"> 
    <img src="/images/photos/Bedroom.jpg" alt="Bedroom" style="[A different ...]" /> 
    <div class="caption">A bedroom</div> 
</div> 

Après avoir cliqué sur un div.small, je voudrais les deux images et des légendes à échanger divs conteneurs. Le hic, c'est que je ne peux pas changer le src, car il y a un tas de styles en ligne qui doivent être conservés. Enfin, une fois les images échangées, je souhaite appliquer ma fonction personnalisée .fitToParent() aux deux.

Comment ferais-je cela?

+8

Lol rofl etc. !! Je me suis juste trouvé à la recherche d'un bon moyen d'échanger du contenu div en utilisant jQuery. Et regarde qui a répondu à cette question ..... – Ropstah

Répondre

16
$(document).ready(function() { 
    $('div.small').click(function() { 
     var bigHtml = $('div.large').html(); 
     var smallHtml = $(this).html(); 

     $('div.large').html(smallHtml); 
     $('div.small').html(bigHtml); 

     //custom functions? 
    }); 
}); 
+0

Merci pour l'aide. Quelqu'un sait pourquoi je perds vos sauts de ligne en le collant dans Visual Studio? – Eric

+3

Cela fonctionne très bien MAIS vous perdez tous les événements liés aux divs (comme "controlName.change()" .L'utilisation de detach et append préserve les événements.Voir http://stackoverflow.com/a/9719297/1359088 –

0

Changer votre balisage un peu:

<div id="large"> 

<div id="small"> 

Et puis dans le Javascript que vous pouvez faire:

var swap = function(fromId, toId){ 
    var temp = $(toId).html(); 
    $(toId).html($(fromId).html()); 
    $(fromId).html(temp); 
} 

Évidemment, il peut être nettoyé, mais vous voyez l'idée.

+0

Passer en id est pas une option, car il y a plus d'un 'div.small' – Eric

1
function swapContent(){ 
    var tempContent = $("div.large").html(); 
    $("div.large").empty().html($("div.small").html()); 
    $("div.small").empty().html(tempContent); 
} 

<div class="large"> 
    <img src="/images/photos/Interior.jpg" alt="The interior" style="[...]" /> 
    <div class="caption">The interior</div> 
</div> 
<div class="small" onclick="swapContent()"> 
    <img src="/images/photos/Bedroom.jpg" alt="Bedroom" style="[A different ...]" /> 
    <div class="caption">A bedroom</div> 
</div> 

Espérons que cela aide.

Questions connexes