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(); } }); } }
Partager