Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    jQuery e toggle su immagine

    salve.
    vorrei realizzare un menu ad albero espandibile (e fin qui ci sono) e vorrei che cliccando sui nodi con figli si mostri il segno + o il segno - a seconda dello stato attuale dell'albero.

    Il mio codice è questo:

    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
    $(function() {
    	$('li>img').each(function(){
    		$(this).next().hide();
    		$(this).click(function(){
      			$(this).toggle(
    				function(e){
    					$(this).attr('src','minus.png');
    			}, 	function(e){
    					$(this).attr('src','plus.png');
    				}
    			);
    			
    			$(this).next().toggle();
    			
    		});
    	});
    });
    </script>
    </head>
    
    <body>
    
    <ul>
    	[*][img]plus.png[/img]Voce 1
        	<ul>
            	[*]Sottovoce 1[*][img]plus.png[/img]Sottovoce 2
                	<ul>
                    	[*]Oggetto 1[*]Oggetto 2[/list]
                [/list]
        [*][img]plus.png[/img]Voce 2
        	<ul>
            	[*]Sottovoce 1.b[*]Sottovoce 2.b[/list]
        [/list]
             [/list]
    </body>
    </html>
    Il codice funziona quasi... solo che (provate anche voi sostituendo 2 immagini a piacere) il più e il meno mi si alternano con questa sequenza: + + - - + + - -, ossia mi cambia segno una sola volta ogni ciclo apertura + chiusura dell'albero.

    Dove sta l'errore? L'errore c'è!! Lo so... è il dove che mi sfugge!
    Dice il saggio:
    Non ci sono domande difficili, esistono solo risposte che non conosciamo!
    "Se qualcosa può andare male, lo farà" - Murphy

  2. #2

    risolto...

    Ho risolto modificando leggermente lo script.

    Ad uso e consumo di chi ne avesse bisogno:
    codice:
    $(function() {
    	$('li>img').each(function(){
    		$(this).next().hide();
    		$(this).click(function(){
    			$(this).attr('src') == 'piu.gif'?$(this).attr('src','meno.gif') : $(this).attr('src','piu.gif');
    			$(this).next().toggle();
    			
    		});
    	});
    });
    Dice il saggio:
    Non ci sono domande difficili, esistono solo risposte che non conosciamo!
    "Se qualcosa può andare male, lo farà" - Murphy

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.