Ce l'ho fatta, ma non facendo quello che mi avevi consigliato, o meglio grazie a te ho smanettato un po' di più e, davvero per caso, ho trovato l'inghippo, ti spiego:
all'inizio ho creato la variabile fuori da on.document.ready:
<script type="text/javascript">
var slider = $('.cont_prog_slider').bxSlider({
pagerType:'short',
infiniteLoop: false,
speed:2000
});
</script>
e l'ho eliminata dall'evento onclick; avevo però bisogno di richiamare la variabile (ora globale) slider_sel in qualche modo con l'evento 'onclick' di ogni voce menu:
Ho provato con .bind, ma non funzionava, la variabile non veniva caricata.
Ho provato allora a settare semplicemente la variabile come true (slider_sel=truema non funzionava comunque.
Ho provato anche a utilizzare il pubblic method fornito da BxSlider, Reloadslider, ma neanche così non funzionava.
Ho quindi pensato che forse era necessario, oltre a scrivere la variabile fuori da on.document.ready, scrivere la variabile nell'evento on click, e l'ho quindi ricopiata all'interno di ogni click function:
<script type="text/javascript">
$(document).ready(function(){
$("#esterni-sel").click(function () {
if (slider != null) {
// esiste
alert ("slider esiste, lo distruggo");
slider.destroySlider();
slider = null;
} else {
//non esiste
alert ("slider non esiste: distruggo slider_sel");
slider_sel.destroySlider();
}
$('.blocco div').unwrap();
$('.cont_prog_slider div').unwrap();
$(".interni").hide("slow");
$(".ristrutturazioni").hide("slow");
$(".esterni").show("slow");
var divs = $(".esterni");
for(var i = 0; i < divs.length; i+=15) {
divs.slice(i, i+15).wrapAll("<div class='blocco'></div>");
}
$(".blocco").wrapAll("<div class='cont_prog_slider'></div>");
var slider_sel = $('.cont_prog_slider').bxSlider({
pagerType:'short',
infiniteLoop: false,
speed:2000
});
});
Ecc. ecc.
});
</script>
ma anche così non funzionava.
Non sapendo più cosa fare, ho provato a togliere "var" dalla variabile che genera il bx-slider nell'evento 'onclick' (slider_sel) pensando che il "var" davanti creasse rindondanza, questo è possibile perchè il plug-in permette di creare lo slider in due modi:
var slider = $('#nomeslider').bxSlider({});
slider = $('#nomeslider').bxSlider({});
In questo modo funzionava tutto!!!
A questo punto, tutto soddisfatto dell'obiettivo raggiunto, ho voluto eliminare la variabile creata fuori da on.document.ready per vedere la differenza con e senza (una sorta di ctrl+z, ctrl+y) e stranamente funzionava lo stesso!!!
Ho pensato fosse la cahe che mi leggeva ancora il file non aggiornato e invece NO!
L'unica cosa che posso pensare è che creando lo slider con il secondo metodo (slider = $('#nomeslider').bxSlider({})la varibile che viene generata è una variabile globale anche se viene creata dall'evento 'onclick' dentro a on.document.ready...
cazzarola la soluzione ce l'avevo a portata di mano e la ignoravo.
Ti ringrazio davver dell'aiuto, anche se l'inghippo era altrove, mi hai sicurmante chiarito meglio le varibli globali e locali, anche se ancora non capisco come avrei fatto a richiamre la varibabile essterna dall'evento 'onclick'...
Come detto all'inizio del post, non son un programmatore java e di slito mi limito a poche righe di jquery per creare piccole cose, mi piacerebbe imparare e ho visto che la guida su questo sito è molt valida, solo che non capisco molto, forse dovrei prima studiarmi la guida javascript puro?
Non saprei... grazie ancora:
http://www.jeanclaudechiementin.com/.../progetti.html
![]()
![]()
![]()