Ciao a tutti, sono un novizio con jquery e ho il seguente problema che mi sta facendo ammattire:
nella mia pagina ho 4 link ognuno dei quali, se cliccato, tramite l'evento onclick ricrea la porzione di html che contiene i link facendo in modo che quello che è stato cliccato risulti evidenziato e non più cliccabile.
Funziona, ma solo la prima volta che clicco su un link dopo aver caricato la pagina. Tutte le altre volte non funziona più e viene inserita l'ancora sull'url della pagina.
Per capirci:
la mia pagina prova.html è così fatta:
La situazione di partenza è quella in cui il link attivo è quello relativo al tabellone A e non è cliccabile per cui al caricamento della pagina vedo:codice:<html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"> </script> </head> <body> <main class="main"> <ul class="filter-menu"> <li id="tab_a"><b><span>Tabellone A</span></b></li> <li id="tab_b"><a class ="active" id = "B" href="#" title="Tabellone B"><span>Tabellone B</span></a></li> <li id="tab_c"><a class ="active" id = "C" href="#" title="Tabellone C"><span>Tabellone C</span></a></li> <li id="tab_d"><a class ="active" id = "D" href="#" title="Tabellone D"><span>Tabellone D</span></a></li> </ul> </body> </html> <script> $(document).ready(function(){ $("a.active").on('click', function(e) { var tab=$(this).attr("id"); if(tab=='A') { $("li#tab_a").html('<b><span>Tabellone A</span></b>'); $("li#tab_b").html('<a class ="active" id = "B" href="#"><span>Tabellone B</span></a>'); $("li#tab_c").html('<a class ="active" id = "C" href="#"><span>Tabellone C</span></a>'); $("li#tab_d").html('<a class ="active" id = "D" href="#"><span>Tabellone D</span></a>'); } if(tab=='B') { $("li#tab_a").html('<a class ="active" id = "A" href="#"><span>Tabellone A</span></a>'); $("li#tab_b").html('<b><span>Tabellone B</span></b>'); $("li#tab_c").html('<a class ="active" id = "C" href="#"><span>Tabellone C</span></a>'); $("li#tab_d").html('<a class ="active" id = "D" href="#"><span>Tabellone D</span></a>'); } if(tab=='C') { $("li#tab_a").html('<a class ="active" id = "A" href="#"><span>Tabellone A</span></a>'); $("li#tab_b").html('<a class ="active" id = "B" href="#"><span>Tabellone B</span></a>'); $("li#tab_c").html('<b><span>Tabellone C</span></b>'); $("li#tab_d").html('<a class ="active" id = "D" href="#"><span>Tabellone D</span></a>'); } if(tab=='D') { $("li#tab_a").html('<a class ="active" id = "A" href="#"><span>Tabellone A</span></a>'); $("li#tab_b").html('<a class ="active" id = "B" href="#"><span>Tabellone B</span></a>'); $("li#tab_c").html('<a class ="active" id = "C" href="#"><span>Tabellone C</span></a>'); $("li#tab_d").html('<b><span>Tabellone D</span></b>'); } e.preventDefault(); }); }); </script>
- Tabellone A
- Tabellone B
- Tabellone C
- Tabellone D
I link cliccabili sono B, C e D. Se clicco ad esempio su B succede quello che mi aspetto, ovvero che l'html dei link venga rimodellato in questo modo, rendendo attivo il link B:
- Tabellone A
- Tabellone B
- Tabellone C
- Tabellone D
Game over. Non posso più cliccare su gli altri link attivi perché non succede più niente tranne il fatto che viene generata un'ancora sull'url della mia pagina che diventa pagina.html#
Mi pare di aver capito, facendo delle ricerche sui vari forum, che se si generano dinamicamente degli elementi sui quali si vuole poter richiamare l'evento onclick ci sono dei problemi ma non ho capito se e come si possono risolvere. Qualcuno ha una soluzione per me, ammesso che esista?
Grazie.