2016-07-11 1 views
0

J'ai trouvé plusieurs codes fournissant des options brillantes pour qu'un texte se développe en cliquant sur un autre. Développer/réduire les fonctions, je crois que nous sommes tous un peu familiers avec eux. Mais ce qui m'intéresse principalement, c'est comment pourrais-je étendre le show de texte à partir d'un bloc de texte que j'avais déjà développé à partir d'une autre ligne? Je veux dire que je clique sur une ligne et qu'elle montre une autre ligne sur laquelle je peux cliquer à nouveau et qui montre une troisième qui n'était pas visible auparavant.Extension de texte dans du texte en expansion

Est-ce possible d'une manière ou d'une autre? Merci beaucoup pour vos commentaires pour lesquels vous prenez le temps de fournir à l'avance!

+4

* Les questions qui nous demandent de recommander ou de trouver un livre, un outil, une bibliothèque de logiciels, un didacticiel ou autre ressource hors site sont hors sujet pour Stack Overflow, car elles ont tendance à attirer réponses opiniâtres et spam. Au lieu de cela, décrivez le problème et ce qui a été fait jusqu'à présent pour le résoudre. * – Script47

+0

voulez-vous dire cela? http://www.w3schools.com/css/tryit.asp?filename=trycss_display_js – mlegg

+0

Sorte de similaire, mais vraiment pas tout à fait. Comme je l'ai dit, ce que je recherche, c'est une façon d'étendre le texte à partir du texte développé. Donc, pour le mettre aussi simplement que je peux: J'ai le texte a, je clique sur le texte a et le texte b montre, puis je clique sur le texte b et le texte c montre, qui n'a pas montré auparavant. Donc je parle 2 étapes. L'une est la révélation du texte b dans le texte a, puis la révélation du texte c dans le texte b qui n'était pas visible auparavant. –

Répondre

0

Vous pouvez essayer quelque chose comme ceci: https://jsfiddle.net/julienetienne/41g9f1pt/1/

La clé est d'obtenir l'indice, je préfère mettre liste des noeuds dans des tableaux, de cette façon, vous pouvez utiliser les fonctions premières de classe. Cette démo rugueuse j'ai fait aura besoin d'un polyfill ou deux pour le soutien IE8:

var section = document.getElementsByTagName('section')[0]; 
 
var sectionArray = [].slice.call(section.children); 
 
var lastElement; 
 

 
section.addEventListener('click', showHide, true); 
 

 
function showHide(e) { 
 
    var target = e.target; 
 
    var indexOfSection = sectionArray.indexOf(target); 
 
    var elementToToggleHeight; 
 
    // If element is a paragraph 
 
    if (target.tagName === 'P') { 
 
    var elementToToggle = section.children[indexOfSection + 1]; 
 

 
    if(indexOfSection + 1 < sectionArray.length){ 
 
     elementToToggleHeight = parseInt(window.getComputedStyle(elementToToggle, null).getPropertyValue("height"),10); 
 
     } 
 

 
    if (elementToToggleHeight) { 
 
     // Function to close all except current and first 
 
     sectionArray.forEach(function(paragraph){ 
 
     if(paragraph !== target && paragraph !== sectionArray[0]){ 
 
     paragraph.style.height = 0; 
 
     } 
 
     }); 
 

 
    } else { 
 
     if(elementToToggle) 
 
     elementToToggle.style.height = '1em'; 
 
    } 
 
    } 
 
}
p { 
 
    font-size: 1em; 
 
    cursor: pointer; 
 
    height: 0; 
 
    overflow: hidden; 
 
    background: yellowgreen; 
 
    -webkit-transition: all 0.5s ease; 
 
    -moz-transition: all 0.5s ease; 
 
    -o-transition: all 0.5s ease; 
 
    transition: all 0.5s ease; 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 

 
p:first-child { 
 
    height: auto; 
 
}
<section> 
 
    <p>The path of the righteous man is beset on all sides</p> 
 
    <p>by the inequities of the selfish and the tyranny of evil men</p> 
 
    <p>And I will strike down upon thee with great </p> 
 
    <p>vengeance and furious anger those who would attempt</p> 
 
    <p>to poison and destroy my brothers</p> 
 
</section>

+0

Wow, c'est super soigné !! Je vous remercie beaucoup pour votre aide, je ne sais pas si vous avez eu autour ou créé tout à l'heure, si ce dernier est le cas alors putain, par rapport à moi, vous êtes très compétent. J'adore comment vous avez ajouté la fonction pour réduire les paragraphes sauf pour le premier et le courant! Vous m'avez énormément aidé, je me demande pourquoi un tel code n'était pas disponible auparavant dans mes tentatives de recherche ... croyez-moi, j'ai essayé de trouver une réponse pendant un temps trop long à ce problème. Quoi qu'il en soit, merci encore une fois et passez une bonne journée! :) –

+0

Aucun problème. Je viens de le créer maintenant mais je dois dire que ça pourrait valoir la peine de jouer avec, peut-être en utilisant display: none/block plutôt que height. Ou même l'opacité. Si ce n'est pas le cas, il peut être utile d'emballer chaque étiquette afin de pouvoir utiliser un meilleur rembourrage. Si vous avez des problèmes faites le moi savoir et je vais cuisiner quelque chose.Toi aussi Richard;) – Undefined

+0

J'ai trouvé un petit bug. Étapes à reproduire: ouvrir toutes les 5 lignes de texte. Cliquez sur 3ème. Toutes les lignes s'effondreront mais 1er et 3ème. –

0

Je vois que vous avez marqué jQuery, donc j'écris petit exemple très simple https://jsfiddle.net/alienpavlov/khk40ygm/2/ utiliser:

$('.expand').click(function(e) { 
 
    e.stopPropagation(); 
 
    var $expand = $(this).children('.expand.hide'); 
 
    if ($expand.length >= 1) { 
 
     $expand.removeClass('hide'); 
 
    } else { 
 
     $(this).find('.expand').addClass('hide'); 
 
    } 
 
});
div { 
 
    padding: 15px; 
 
} 
 

 
.hide { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<div class="expand"> 
 
    Some parent text 
 
    <div class="expand hide"> 
 
     1st level child 
 
     <div class="expand hide"> 
 
      2n level child 
 
     </div> 
 
    </div> 
 
</div>

Dans cet exemple, vous pouvez avoir plus de 2 éléments enfants

+1

Je suppose qu'il est maintenant évident que je n'ai pas encore trop d'expérience, mais je suis confiant dans l'utilisation d'éléments qui m'intéressent. Merci beaucoup de fournir ceci, fondamentalement c'est EXACTEMENT ce que je cherchais et la solution était beaucoup plus simple que je pensais! C'est vraiment petit et simple mais la simplicité signifie aussi qu'il est facilement modifiable, c'est génial! –