Hello,
voici le contexte:

Via xsl/xml je génère ma page html, celle-ci une fois générée contient:
- X blocs
- chaque bloc contient un tableau qui lui contient Y llignes ( 1 ligne contient 1 input (select/text/radio ...)).
- il y a environ 10 bloc pour un total de 300 inputs.

Entre certains input, il y a des lignes de separations (juste une ligne blanche en fait) .


Mon soucis à l'heure actuelle c'est que dynamiquement les input sont cachés sous certains conditions (tel champ vaut cette valeur etc..).

Le but est donc de cacher la ligne de separation s'il n'y a plus d'input apres celle-ci.


Pour le moment j'avais mis en place un setInterval toutes les 1000ms qui fait appel à ma fonction de vérification des separations, mais comme il y a pas mal de traitements dont ajax derriere, ca freeze la page toutes les 1s et pour 1/2s donc pas top


Pour contrer ça j'ai essayé d'attribuer à chaque input, sur l'évènement onclick ou keypress ma fonction de vérif des séparations; résultat, au chargement de ma page, j'ai un freeze de 5s environ, le temps qu'il attache mon event à chaque input on dirait.

Même chose si je tente de le faire directement dans le xsl.


Du coup là je bloque, je vois pas comment je peux optimiser ce truc :/


Ma fonction :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
function visi_separations(id){
 
		var nb = 0;
		if(id != undefined ){
			$("#"+id).next().find(".separation").each( function(){
				nb = 0;
				nb = $(this).nextAll(":visible").not(".indication").length;
				if(nb == 0)
					$(this).hide();
				else
					$(this).show();
			});	
		}
		else{
			$("form > div table:visible").each( function(){
				if($(this).find(".separation").length > 1){
					nb = 0;
					nb = $(this).find(".separation:last").nextAll(":visible").not(".indication").length;
					if(nb == 0)
						$(this).find(".separation:last").hide();
					else
						$(this).find(".separation:last").show();
				}
				else if($(this).find(".separation").length == 1){
					nb = 0;
					nb = $(this).find(".separation").nextAll(":visible").not(".indication").length;
					if(nb == 0)
						$(this).find(".separation").hide();
					else
						$(this).find(".separation").show();
				}
			});
		}
}