Home > OS >  Can I e.currentTarget.children inside another e.currentTarget.children JQuery?
Can I e.currentTarget.children inside another e.currentTarget.children JQuery?

Time:02-25

I am making a frequent questions section and I added an arrow which I wanted to flip when the question is clicked and the answer showed.

I notice if I want for the element to be find with the e.currentTarget.children when clicked it most be immediate after the class clicked and I am having a hard time doing in it.

Any help is more than welcome!

This is my code:

HTML:

<section >
            <ul >
                <h3 >Preguntas frecuentes</h3>

                <li id="beca-info" >
                    <div >
                    <h4 >¿Qué es la ProgramacionBeca?</h4>
                    <img src="img/items/arrow.png"  height="20px">
                    </div>
                    <p id="respuesta-beca"  hidden>Queremos que lo económico no sea una barrera a la
                        hora de acceder a educación de calidad. Por eso,
                        premiamos tu esfuerzo y te becamos con el 70% para que puedas hacer el curso o carrera que te
                        guste.</p>
                        <p id="respuesta-beca"  hidden>Contamos con 2 requisitos para mantener la beca: participar del 85% de las clases
                        y entregar todos los desafíos en tiempo y forma.</p>
                </li>

                <li id="metodología-info" >
                    <div >
                    <h4 >¿Cómo es la metodología online en vivo?</h4>
                    <img src="img/items/arrow.png"  height="20px">
                    </div>
                    <p id="respuesta-metodología"  hidden>Somos una plataforma que ofrece cursos y
                        carreras online y en vivo.
                        Tanto el profesor como el estudiante deben conectarse
                        ciertos días y horarios de la semana para poder asistir a la clase.
                        Todos los estudiantes tienen un grupo con el que empiezan y terminan el curso.</p>
                        <p id="respuesta-metodología"  hidden>Además del profesor, vas a tener un tutor personalizado que te te va a ayudar a avanzar con
                            todos tus proyectos y a despejar todas tus dudas durante y después de cada clase.</p>       
                </li>
            </ul>
        </section>

JQuery:

$(".pregunta").on('click', function (e) {
    
    $(e.currentTarget).children('.respuesta').slideToggle();
    
    $(e.currentTarget).(e.currentTarget)('.arrow').css('transform', ($('.arrow').css('transform') == 'none') ? 'rotate(180deg)' : 'none');

  });

The code should look like this when clicked:

enter image description here

CodePudding user response:

Not sure what $(e.currentTarget).(e.currentTarget)('.arrow') was meant to be, but one way to target the relative arrow is $(this).find('.titulo-arrow .arrow'). Also, to figure out if we're opening or closing I use a className and just test for it

$(".pregunta").on('click', function(e) {
  let isOpening = !$(this).hasClass('opened');
  $(this).children('.respuesta').slideToggle();
  $(this).find('.titulo-arrow .arrow').css('transform', isOpening ? 'rotate(180deg)' : 'none');
  if (isOpening) $(this).addClass('opened');
  else $(this).removeClass('opened');

});
.arrow {
  display: inline-block;
  transition: all .4s;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section >
  <ul >
    <h3 >Preguntas frecuentes</h3>

    <li id="beca-info" >
      <div >
        <h4 >¿Qué es la ProgramacionBeca?</h4>
        <div >arrow</div>
      </div>
      <p id="respuesta-beca"  hidden>Queremos que lo económico no sea una barrera a la hora de acceder a educación de calidad. Por eso, premiamos tu esfuerzo y te becamos con el 70% para que puedas hacer el curso o carrera que te guste.
      </p>
      <p id="respuesta-beca"  hidden>Contamos con 2 requisitos para mantener la beca: participar del 85% de las clases y entregar todos los desafíos en tiempo y forma.</p>
    </li>

    <li id="metodología-info" >
      <div >
        <h4 >¿Cómo es la metodología online en vivo?</h4>
        <div >arrow</div>
      </div>
      <p id="respuesta-metodología"  hidden>Somos una plataforma que ofrece cursos y carreras online y en vivo. Tanto el profesor como el estudiante deben conectarse ciertos días y horarios de la semana para poder asistir a la clase. Todos los estudiantes tienen un grupo con el que empiezan
        y terminan el curso.</p>
      <p id="respuesta-metodología"  hidden>Además del profesor, vas a tener un tutor personalizado que te te va a ayudar a avanzar con todos tus proyectos y a despejar todas tus dudas durante y después de cada clase.</p>
    </li>
  </ul>
</section>

  • Related