PDA

View Full Version : [JS-JQuery] modifica menų


[>>VK<<]
31-12-2011, 12:28
ho bisogno di una mano per modificare uno script per un menų a fisarmonica verticale che ho recuperato in rete; lo script č il seguente:

<script>
$().ready(
function() {
// nascondo tutti i sottomenu
$("#s1").hide();
$("#s2").hide();
$("#s3").hide();
// mostro i sottomenu del blocco principale 1
$("#p1").click(
function() {
if ($("#s1").is(":hidden")) $("#s1").slideDown(); else $("#s1").slideUp();
if ($("#s2").is(":visible")) $("#s2").slideUp();
if ($("#s3").is(":visible")) $("#s3").slideUp();
}
);
// mostro i sottomenu del blocco principale 2
$("#p2").click(
function() {
if ($("#s1").is(":visible")) $("#s1").slideUp();
if ($("#s2").is(":hidden")) $("#s2").slideDown(); else $("#s2").slideUp();
if ($("#s3").is(":visible")) $("#s3").slideUp();
}
);
// mostro i sottomenu del blocco principale 3
$("#p3").click(
function() {
if ($("#s1").is(":visible")) $("#s1").slideUp();
if ($("#s2").is(":visible")) $("#s2").slideUp();
if ($("#s3").is(":hidden")) $("#s3").slideDown(); else $("#s3").slideUp();
}
);
}
);
</script>

fonte script (http://www.mrwebmaster.it/javascript/articoli/menu-verticale-espandibile-effetto-slide-jquery_1207.html)


il mio problema č che il menų viene ricaricato a ogni cambio pagina, e volevo far in modo che se la pagina cliccata si trova all'interno di un sottomenų, il tale sottomenų nn si chiudesse al ricaricamento della pagina.

per far questo ho deciso di passare la variabile idmenu tramite url, il problema č che poi nn so come recuperarla in jquery per fare uno switch; qualcuno sa darmi una mano???

wingman87
31-12-2011, 12:43
Ecco qua:
http://stackoverflow.com/questions/901115/get-query-string-values-in-javascript

[>>VK<<]
22-01-2012, 01:19
ciao a tutti, ho un'altro problema con il meno in jquery
il codice č stato modificato come di seguito...

function getURLParameter(name) {
return decodeURIComponent(
(location.search.match(RegExp("[?|&]"+name+'=(.+?)(&|$)'))||[,null])[1]
);
}

$().ready(
function() {
if (getURLParameter("idmenu"))
switch(getURLParameter("idmenu")) {

case "3.1,3.2,3.3,3.4,3.5":
$("#s2").hide();
$("#s3").hide();
break; //si ferma qui

case 5.1 || 5.2 || 5.3:
$("#s1").hide();
$("#s3").hide();
break; //si ferma qui

case 6.1 || 6.2:
$("#s1").hide();
$("#s2").hide();
break; //si ferma quii

default:
$("#s1").hide();
$("#s2").hide();
$("#s3").hide();
}

il problema sta nel fatto che ho scoperto a mio malincuore che jquery nn prevede l'operatore OR; su internet cercando ho trovato questa soluzione (http://forum.jquery.com/topic/logical-operators-in-selectors)

il problema č che ho provato ad applicare la selezione multipla sul sotto menų 3.x, ma nn mi funziona... qualcuno sa dirmi dove sbaglio ???

wingman87
22-01-2012, 02:15
La soluzione che hai trovato riguarda i selettori che svolgono un compito un po' diverso da quello per cui li vorresti usare tu.
Nel tuo caso si puō risolvere pių semplicemente in questo modo:

case "3.1":
case "3.2":
case "3.3":
case "3.4":
case "3.5":
$("#s2").hide();
$("#s3").hide();
break; //si ferma qui

case "5.1":
case "5.2":
case "5.3":
$("#s1").hide();
$("#s3").hide();
break; //si ferma qui

case "6.1":
case "6.2":
$("#s1").hide();
$("#s2").hide();
break; //si ferma quii

default:

I vari case sono solo delle label, se non usi il break tra uno e l'altro l'esecuzione continua anche attraverso le label successive.

[>>VK<<]
22-01-2012, 12:36
La soluzione che hai trovato riguarda i selettori che svolgono un compito un po' diverso da quello per cui li vorresti usare tu.
Nel tuo caso si puō risolvere pių semplicemente in questo modo:

case "3.1":
case "3.2":
case "3.3":
case "3.4":
case "3.5":
$("#s2").hide();
$("#s3").hide();
break; //si ferma qui

case "5.1":
case "5.2":
case "5.3":
$("#s1").hide();
$("#s3").hide();
break; //si ferma qui

case "6.1":
case "6.2":
$("#s1").hide();
$("#s2").hide();
break; //si ferma quii

default:

I vari case sono solo delle label, se non usi il break tra uno e l'altro l'esecuzione continua anche attraverso le label successive.

grazie infinite per la risposta e la tempestivitā... ;) ;)