C'est la situation, j'ai 2 divs l'un à côté de l'autre. Une div est très dynamique en hauteur, ce qui signifie qu’elle peut grossir et se réduire pour tenir compte de son contenu. Par exemple, cette div a un contenu qui peut être plié ouvert ou fermé, ou des conteneurs qui peuvent être développés pour s’adapter au contenu chargé ajax.
Maintenant, à côté de cette div est une autre qui suit parfaitement la hauteur de la première par css. Fonctionne très bien. Mais voici la question: je voudrais changer le contenu de cette seconde div en fonction de sa hauteur.
En d’autres termes, div 1 change de taille, div 2 suit css et j’ai maintenant besoin de déclencher un appel ajax pour redéfinir div 2 avec un nouveau contenu, en respectant sa nouvelle taille.
Quelqu'un at-il une idée de comment faire cela avec jQuery? Si possible, sans utiliser de délais d'attente?
À votre santé.
Comme le fil conducteur fourni par poelinca , il existe quelques plugins Nice disponibles pour cette fonctionnalité.
Si vous n'aimez pas l'idée du plugin, une autre solution simple serait de simplement déclencher un événement "redimensionner" sur la div chaque fois que le contenu est modifié. Ensuite, vous pouvez le surveiller avec resize () comme prévu, en utilisant un élégant motif observer .
function appendContent($div, content) {
$div.append(content).trigger($.Event('resize'));
}
$div.bind('resize', function(e) {
// all your magic resize mojo goes here
});
https://github.com/sdecima/javascript-detect-element-resize
Fonctionne comme un charme!
J'ai testé attrchange mais cela ne fonctionnait pas, j'ai perdu 2 heures de travail :(
La seule chose à laquelle je pouvais penser, c’est qu’une minuterie vérifie la hauteur toutes les X
secondes.
Quelque chose comme ça:
function checkHeightTimer(){
var div1 = $('#div1');
var div2 = $('#div2');
var somesize = #somenumber here;
if(div1.height() > somesize){
//do something to div2
}
setTimeout(checkHeightTimer, 500); //at 500 miliseconds
}