Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606

    [jquery] Funzione hide/show su più elementi.

    Ciao
    Mi spiego meglio, così mi chiarifico le idee anche io.
    Dunque: ho una tabella con informazioni riguardo a dei settaggi per delle pagine HTML... le informazioni sono inserite in alcune celle e sono solo info che servono ad identificare una pagina rispetto ad un'altra; i settaggi veri e propri sono inseriti in un elemento nascosto ( <div> ) che viene aperto da un pulsante, uno su ogni riga, un elemento nascosto su ogni riga.
    In pratica qualcosa come questo:
    codice HTML:
                                <tr>
                                    <td>1</td><td>index</td><td>01 ottobre 2014</td>
                                    <td>
                                        <input type="button" id="show1" onclick="show(this.id, 1)" value="VISUALIZZA">
                                        <div id="info1" style="display:none">
                                            <input type="button" id="hide1" onclick="hide(this.id, 1);" value="NASCONDIMI">
                                        </div>
                                    </td>
                                    <td><input type="checkbox" name="visibile" id="visibile" value="ok" checked></td>
                                </tr>
                                <tr>
                                    <td>2</td><td>news</td><td>02 ottobre 2014</td>
                                    <td>
                                        <input type="button" id="show2" onclick="show(this.id, 2)" value="VISUALIZZA">
                                        <div id="info2" style="display:none">
                                            <input type="button" id="hide2" onclick="hide(this.id, 2);" value="NASCONDIMI">
                                        </div>
                                    </td>
                                    <td><input type="checkbox" name="visibile" id="visibile" value="ok" checked></td>
                                </tr>
                                <tr>
                                    <td>3</td><td>search</td><td>14 ottobre 2014</td>
                                    <td>
                                        <input type="button" id="show3" onclick="show(this.id, 3)" value="VISUALIZZA">
                                        <div id="info3" style="display:none">
                                            <input type="button" id="hide3" onclick="hide(this.id, 3);" value="NASCONDIMI">
                                        </div>
                                    </td>
                                    <td><input type="checkbox" name="visibile" id="visibile" value="ok" checked></td>
                                </tr>
    Ovviamente la tabella è dinamica, ovvero più pagine ci sono più righe di tabella ci sono.
    Per risolvere il problema ho pensato di creare delle funzioni ad hoc in modo da gestire i differenti ID con una sola funzione:
    codice:
    <script>
    function hide(id, num) {
    
     $('#' + id).click(function(){
       $('#info' + num).hide();
     });
    
    };
    function show(id, num) {
      
      $('#' + id).click(function(){
        $('#info' + num).show();
      });
    
    };
    </script>
    Ora per funzionare... funzionicchia, nel senso che per aprire il box devo cliccare sui pulsanti su due volte e per chiuderlo idem.
    Ma non riesco a capire dove sbaglio.
    In realtà avrei preferito usare addirittura toggle, ma non so se con due pulsanti separati funzionerebbe.

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Perché raddoppi l'evento onclick fai cosi:

    <input type="button" id="show1" onclick="$('#info<?php echo "codice-numerico-progressivo-php"?>').show();" value="VISUALIZZA">

    <div id="info1" style="display:none">
    <input type="button" id="hide1" onclick=" $('#info<?php echo "codice-numerico-progressivo-php"?>').hide();
    hide(this.id, 1);"
    value="NASCONDIMI">

    </div>
    scrivilo online è la soluzione più facile
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Sarà che oggi non gira ma non capisco dov'è che raddoppio l'evento onclick() a meno che tu non ti riferisca al fatto che ogni funzione chiama poi all'interno un'altra funzione (click(function) ... ) ma francamente mi scoccia non comprenderne il meccanismo.
    Comunque sia, ho già implementato il sistema inline e ovviamente funiona perfettamente.
    Che dire, meglio così anche perché levo di mezzo un po' di codice inutile.

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Quote Originariamente inviata da Marcolino's Visualizza il messaggio
    Sarà che oggi non gira ma non capisco dov'è che raddoppio l'evento onclick() a meno che tu non ti riferisca al fatto che ogni funzione chiama poi all'interno un'altra funzione (click(function) ... ) ma francamente mi scoccia non comprenderne il meccanismo.
    <input type="button" id="show3" onclick="show(this.id, 3)" <-- primo click value="VISUALIZZA">
    function show(id, num) {

    $('#' + id).click(function(){ <-- secondo click
    $('#info' + num).show();
    });

    };
    Comunque sia, ho già implementato il sistema inline e ovviamente funiona perfettamente.Che dire, meglio così anche perché levo di mezzo un po' di codice inutile.
    Concordo
    Ultima modifica di cavicchiandrea; 16-10-2014 a 16:00
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

Tag per questa discussione

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.