Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

275
Views
¿Cómo conciliar 'este' elemento DOM de referencia y 'esta' clase de referencia?

Tengo un problema para entender cómo podría usar la palabra clave 'esto' para referirme a un elemento DOM en el que se ha hecho clic, pero también usar eso dentro de una clase donde 'esto' generalmente se refiere a la instancia de esa clase.

Aquí hay un fragmento del código relevante:

 class Passwords { constructor() { $('.password-column button.steel-button').on('click', this.selectButton); } selectButton() { $(this).toggleClass('selected'); this.columnController(); } columnController(){ // A function that does something else } }

El problema que tengo es que no reconoce columnController() como una función. Me imagino que esto se debe al alcance y cómo funciona con 'esto', pero no estoy seguro de cómo proceder.

En el código anterior, selectButton() se aplica con éxito a todos los botones especificados, pero el error aparece en this.columnController(). El error exacto de la consola es:

TypeError no detectado: this.columnController no es una función

Gracias de antemano.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

No puede usar this para representar ambos objetos, así que elija uno y obtenga el otro a través de algún otro mecanismo.

Por ejemplo: use una función de flecha para vincular this valor a la clase, luego obtenga el elemento del objeto de event .

 class Passwords { constructor() { $('.password-column button.steel-button').on('click', this.selectButton); } selectButton = (event) => { $(event.currentTarget).toggleClass('selected'); this.columnController(); } columnController() { console.log("this runs"); } } new Passwords();
 .selected { background: blue }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="password-column"> <button class="steel-button">click</button> </div>

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!