2010-10-18 6 views
2

J'ai un élément comme celui-ci:Comment rafraîchir la taille d'un div après avoir ajouté des éléments à ce

<div id="content" style="border: 2px solid black"> 
</div> 

Et par JQuery ajouter quelques nouveautés:

$("#content").append($('<div></div>').addClass("box")); 

.box { margin: 10px; padding: 10px; border: 1px solid black } 

Mais le div extérieur ne se redimensionne pas lorsque je fais cela, donc je reçois une boîte intérieure qui dépasse d'un solide extérieur b bœuf. Comment puis-je obtenir la boîte externe pour se redimensionner quand j'ajoute cette boîte intérieure?

+2

'$ (" content ")' est une faute de frappe ou avez-vous oublié de mettre le '#'? – Ben

+0

Juste oublié dans mon exemple, pas dans le code réel. Bon oeil, cependant :) – luqui

+0

Faites-vous un flottant dans votre CSS? –

Répondre

3

Corriger le sélecteur si ce n'est pas une faute de frappe

$("#content") // id="content" (correct) 
$("content") // tagName = content 

Et changer l'affichage du div inline-block

#content { 
    display: inline-block; 
} 

Ensuite, la div ne sera pas occuper toute la ligne.

+1

Comment le navigateur est-il 'inline-block'? –

+2

@Peter: Tout navigateur et pour IE8 +. IE7 pourrait le supporter, je l'utilise sur un site web et ça marche. Cette liste indique que c'est incomplet pour IE7-. http://www.quirksmode.org/css/display.html – BrunoLM

1

essayez ceci:

js

$('#content').append('<div class="box">&nbsp;</div>'); 

html

<div id="content" style="border:2px solid black;overflow:hidden;"> 
</div> 

J'espère que son aide!

+0

Oui, le 'overflow: hidden' l'a fait, même sans le changement de JS. Pouvez-vous expliquer pourquoi? – luqui

+1

@luqui Probable parce que vous étiez en train de flotter les éléments '.box'. C'est un problème CSS, pas un problème Javascript. –

+0

@Yi Jiang, hein, oui, j'étais. Je suppose que je ne crois toujours pas CSS. – luqui

0

#content ne se redimensionne pas, puisqu'il est width est probablement défini dans votre CSS.

Soit l'agrandir, soit le dimensionner de manière appropriée.

On dirait que #content doit avoir une largeur supérieure à 40px, puisque la div interne a 10 marge et 10 rembourrage, soit 20 sur la gauche et 20 sur la droite.

Donc, quelque chose comme:

$("#content").css("width","100%").append($('<div></div>').addClass("box")); 

Ou mieux encore, mettre en place votre CSS à la bonne largeur pour commencer:

#content { width: ... ; } 

Si vous êtes flottaient .box au sein #content alors mettre le overflow de #content à auto (ou caché), sinon la boîte extérieure ne "voit" pas l'auberge flottante boîtes d'er:

#content { overflow: auto; } 
Questions connexes