Domanda

Sto cercando di adattare lo show / hide / mini-fisarmonica di Andy Langton ( http: / /andylangton.co.uk/jquery-show-hide ) per lavorare all'interno di un tavolo. Voglio creare un elenco di eventi con un modulo di conferma allegato a ciascun evento. Facendo clic sul pulsante "Conferma" nell'ultima cella o riga, vorrei che il modulo associato a questo particolare evento venisse rivelato.

Il codice di Andy utilizza

$('.toggle')
    .prev()
    .append('<a href="#" class="toggleLink">'+showText+'</a>');

per aggiungere dinamicamente il collegamento di attivazione / disattivazione (il pulsante di conferma) appena prima del modulo nascosto. Ciò, tuttavia, aggiunge il collegamento all'interno della riga della tabella e non in una cella. L'ho quindi modificato in

$('.toggle')
    .prev()
    .append('<td><a href="#" class="toggleLink">'+showText+'</a></td>');

Il link ora è nella posizione corretta ma ora non invoca lo show / hide del modulo. Quando è stato inserito in modo errato la funzionalità ha funzionato, nonostante non fosse del tutto corretta. Sento che il selettore che chiama l'azione di attivazione / disattivazione non è corretto ma non so come correggerlo. Attualmente è

$(this)
    .parent()
    .next('.toggle')
    .toggle('slow');

Questo è essenzialmente l'aspetto della fonte ...

<table id="training-events">
<tr>
   <th>Date / Time</th>
   <th>Event / Venue</th>
   <th>Cost</th>
   <th>Confirm</th>
</tr>
<tr class="event" valign="top">
    <td class="date">Mon, 10 August 2009<br>03:30 PM - 05:30 PM</td>
    <td><h5>Regional Director Meeting</td>
    <td>No Charge</td>
    <td><a href="#" class="toggleLink">Cancel</a></td>
</tr>
<tr style="display: none;" class="toggle">
   <td colspan="4">
      ** FORM **
   </td>
</tr>
</table>
È stato utile?

Soluzione

Ti serve qualcosa del tipo:

$(this).parent().parent().next('.toggle').toggle('slow')

o

$(this).closest('tr').next('.toggle').toggle('slow'); 

Stai solo effettuando una chiamata single parent () che ti porta al TD, devi passare al TR.

Altri suggerimenti

Questo funziona per me se rimuovo style = " display: none; " dalla levetta TR.

Noterai nell'esempio che sta facendo anche:

 $('.toggle').hide();

Questo è ciò che nasconde gli elementi classificati di commutazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top