Maison > interface Web > tutoriel CSS > Comment développer et réduire dynamiquement les lignes d'un tableau avec jQuery ?

Comment développer et réduire dynamiquement les lignes d'un tableau avec jQuery ?

Barbara Streisand
Libérer: 2024-11-05 06:09:02
original
695 Les gens l'ont consulté

How to Dynamically Expand and Collapse Table Rows with jQuery?

Agrandissement et réduction dynamique des lignes d'un tableau avec jQuery

Problème :

Agrandissement ou réduction d'un tableau les lignes lorsqu'un en-tête de colonne spécifique est cliqué pose un défi. Pour simplifier cette tâche, une classe CSS personnalisée peut être utilisée pour distinguer les lignes dans chaque en-tête. Cependant, la gestion de plusieurs classes CSS pour plusieurs en-têtes peut devenir fastidieuse.

Solution :

Pour éviter la complexité du suivi de plusieurs classes CSS, une approche alternative exploite le nextUntil( ) méthode dans jQuery. Cette méthode récupère toutes les lignes suivant la ligne d'en-tête cliquée, jusqu'à ce que la ligne d'en-tête suivante soit rencontrée.

Extrait de code :

<code class="javascript">$('.header').click(function(){
    $(this).nextUntil('tr.header').slideToggle(1000);
});</code>
Copier après la connexion

Structure HTML :

<code class="html"><table border="0">
  <tr class="header">
    <td colspan="2">Header</td>
  </tr>
  <tr>
    <td>data</td>
    <td>data</td>
  </tr>
  <tr>
    <td>data</td>
    <td>data</td>
  </tr>
</table></code>
Copier après la connexion

Exemple :

Dans cet exemple, une classe « en-tête » est affectée à la ligne d'en-tête. Lorsqu'un utilisateur clique sur une ligne d'en-tête, les lignes situées immédiatement en dessous basculent entre masquées et visibles, à l'aide de la méthode slideToggle().

Fonctionnalités supplémentaires :

  • Vous pouvez utiliser un élément span dans la ligne d'en-tête pour afficher un signe " " ou "-", qui bascule une fois la ligne développée ou réduite :
<code class="javascript">$('.header').click(function(){
    $(this).find('span').text(function(_, value){return value=='-'?'+':'-'});
    $(this).nextUntil('tr.header').slideToggle(100);
});</code>
Copier après la connexion
  • Pour basculer la durée icône/texte de manière asynchrone une fois la bascule terminée, utilisez la promesse() de la méthode slideToggle() :
<code class="javascript">$(this).nextUntil('tr.header').slideToggle(100).promise().done(function () {
    $this.find('span').text(function (_, value) {
        return value == '-' ? '+' : '-'
    });
});</code>
Copier après la connexion
  • Vous pouvez également utiliser un pseudo-élément CSS pour représenter l'expansion/la réduction signez et basculez une classe sur l'en-tête :
<code class="css">.header .sign:after{
    content:"+";
    display:inline-block;      
}
.header.expand .sign:after{
    content:"-";
}</code>
Copier après la connexion
<code class="javascript">$(this).toggleClass('expand').nextUntil('tr.header').slideToggle(100);</code>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal