Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    19

    jQuery dialog apre tutti i pulsanti assieme

    Sto usando Jquery dialog all'interno di una tabella e un ciclo while PHP.

    Lo script è il seguente:


    codice:
    <script type="text/javascript">
        $(function() {
            $(".trigger").click(function() {
                $(".dialog").dialog("open");
            });
            $(".dialog").dialog({
                autoOpen: false,
                position: 'center' ,
                title: 'definizione',
                draggable: true,
                width: 480,
                height: 380, 
                resizable: true,
                modal: true,
                show: 'slide'
            });
        });
    </script>
    La tabella in HTML/PHP è la seguente:

    codice:
    <table>
        <tr>
            <th>TITLE</th>
            <th>info</th>
        </tr>
    
    <?
    while($objResult = mysql_fetch_array($objQuery))
    {
    ?>
    
        <tr>
            <td class="text-left"><?=$objResult["title"];?></td>
            <td>
            <button class="trigger">info</button>
            <div class="dialog" style="display:none;" title="info">
            <iframe frameborder="0" scrolling="yes" width="480" height="380" src="def.php?title=<?=$objResult['title'];?>"></iframe>
            </div>
            </td>
        </tr>
    
    <?
    }
    ?>
    
    </table>
    Come potete vedere, la tabella crea un pulsante in ogni riga (correttamente) e i pulsanti funzionano (cioé aprono una finestra dialog).
    Il problema è che quando clicco su qualsiasi dei pulsanti, si aprono le finestre di dialog di tutti i pulsanti assieme, una sopra l'altra.

    Non riesco a capire come aprire solo la finestra del pulante che viene cliccato.
    Ho anche provato con:

    codice:
    $(this).next(".dialog").dialog("open");
    ma non funziona.
    Ultima modifica di alval; 13-12-2015 a 18:54

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, certo perchè hai assegnato una classe e non un id univoco. Quindi tutti i .dialog si aprono.
    Dovresti lavorare sugli id oppure provare ad usare
    $(".trigger").click(function(){
    $(this).next('.dialog').dialog('open');
    });

    Ps
    non ricordo se next() è corretto ma comunque sta per indicare il primo dialog adiacente al button



  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    19
    Ecco la soluzione che ho trovato:

    codice:
    $("tr:has(.trigger):has(.dialog)").each(function() {
          var row = this
          var dialog = $(".dialog", row).dialog({
            autoOpen: false,
            position: 'center',
            title: 'definizione',
            draggable: true,
            width: 480,
            height: 380,
            resizable: true,
            modal: true,
            show: 'slide'
          });
          $(".trigger", row).click(function() {
            dialog.dialog("open");
          });
    })
    Ecco qui il risultato:
    http://www.trovawiki.altervista.org/oggi.php
    Ultima modifica di alval; 17-12-2015 a 10:35

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.