recherche

Maison  >  Questions et réponses  >  le corps du texte

Supprimer les attributs HTML sans valeur

J'ai une application R Shiny avec une barre de navigation du package R Shiny. Cependant, je souhaite générer du HTML, donc aucune connaissance spécifique de R n'est requise ici.

Tabulation dans cette barre de navigation ignorera ces entrées si ces onglets ont été précédemment sélectionnés. En effet, Shiny le fera class="active" 添加到导航栏中该选项卡的

  • 元素。然后,当您单击该选项卡时,它会删除 ="active",只剩下
  • lorsqu'un onglet est sélectionné. Le HTML est-il valide sur la base d'un attribut de classe vide ? Ce code HTML n'est pas valide, c'est sûrement pour cela que la tabulation dans la barre de navigation échoue

    Je souhaite supprimer ces cibles de classe qui n'ont aucune valeur. J'ai essayé de le faire en utilisant jquery en ajoutant

    $(document).on('hide.bs.tab', (x) => {
        $('*[class!=*]').removeAttr('class');
    

    Supprimez toutes ces cibles chaque fois qu'un nouvel onglet est sélectionné. Cependant, je pense que cela entraînera une confusion supplémentaire, car d'autres fonctionnalités de l'application sont désormais interrompues - comme on pouvait s'y attendre, il s'agit d'une approche très brutale. Le problème est que ce HTML n'est pas valide et je ne sais pas comment le sélectionner correctement !

    Ce serait formidable si quelqu'un pouvait suggérer une stratégie pour résoudre ce problème. Merci!

  • P粉797004644P粉797004644450 Il y a quelques jours554

    répondre à tous(1)je répondrai

  • P粉401901266

    P粉4019012662023-09-07 14:23:10

    Utilisez des attributs sur des classes vides[]选择器,例如:[class=""]

    $('[class=""]').removeAttr("class");
    [class] {
      background: red;
    }
    <div class="foo">class="foo"</div>
    <div class="">class=""</div>
    <div class>class</div>
    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>

    En JavaScript pur, vous feriez ceci :

    document.querySelectorAll('[class=""]').forEach(el => el.removeAttribute("class"));
    [class] {
      background: red;
    }
    <div class="foo">class="foo"</div>
    <div class="">class=""</div>
    <div class>class</div>

    Pas besoin de charger toute la bibliothèque.

    répondre
    0
  • Annulerrépondre