Insérer des <div> à la volée
Salut !
Mon objectif est de créer une liste d'éléments avec cette condition : si la liste a plus de 20 éléments on cache les 21 à n éléments qu'on peut afficher en cliquant sur + puis les recacher.
Jusque là pas de soucis, c'est ce genre de truc que je veux obtenir :
http://www.webdesignerwall.com/demo/...ide-panel.html
Seulement le code de ma liste ne contient pas de div par défaut et je veux insérer un élément div à la volée si ma liste contient plus de 20 éléments.
Mon problème est que je n'arrive pas à insérer l'ouverture du div au début de ma liste et la fermeture à la fin.
Voici mon code (c'est au moment de l'insertion des divs que j'ai un soucis) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
$(document).ready(function(){
var i = 0; // Nombre de d'éléments total
var n = 0; // Nombre de ul
$("ul").each(function(){
n= 0;
i=i +1;
//alert(i);
$(this).find("li").each(function(){
n=n +1;
if (n>=20) { // Si on a une liste >= de 20 éléments
if (n == 20) // Pour le premier élément on lui attribut un div
{
$(this).after('<div class="wrap-hidden">');
$(this).("li:last").("</div>");
}
$(this).nextAll("li").addClass("hidden");
$(this).nextAll().hide();
return false;// On cache les éléments de 21 à n
/* On ajoute le bouton plus que l'on ne cache pas */
//alert("arg");
}
});
});
alert("Nombre de d'éléments total : "+n);
alert("Nombre de ul : "+i);
$(".btn-slide").click(function(){
$(".hidden").slideToggle("slow");
return false;
});
}); // fin |
Le 1er <div> est bien inséré mais le code génère aussi la balise de fermeture (que je ne veux obtenir à la fin de ma liste) juste après le <div> d'ouverture ...
Une idée ?